{
  "contractName": "SecretStoreDocumentKeyShadowRetrievalService",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "documentKeyShadowRetrievalFee",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "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": true,
      "inputs": [],
      "name": "maxDocumentKeyShadowRetrievalRequests",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keyServersCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "drain",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "requester",
          "type": "address"
        }
      ],
      "name": "DocumentKeyCommonRetrievalRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "requesterPublic",
          "type": "bytes"
        }
      ],
      "name": "DocumentKeyPersonalRetrievalRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "requester",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "commonPoint",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "threshold",
          "type": "uint8"
        }
      ],
      "name": "DocumentKeyCommonRetrieved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "requester",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "decryptedSecret",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "shadow",
          "type": "bytes"
        }
      ],
      "name": "DocumentKeyPersonalRetrieved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "requester",
          "type": "address"
        }
      ],
      "name": "DocumentKeyShadowRetrievalError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requesterPublic",
          "type": "bytes"
        }
      ],
      "name": "retrieveDocumentKeyShadow",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requester",
          "type": "address"
        },
        {
          "name": "commonPoint",
          "type": "bytes"
        },
        {
          "name": "threshold",
          "type": "uint8"
        }
      ],
      "name": "documentKeyCommonRetrieved",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requester",
          "type": "address"
        },
        {
          "name": "participants",
          "type": "uint256"
        },
        {
          "name": "decryptedSecret",
          "type": "bytes"
        },
        {
          "name": "shadow",
          "type": "bytes"
        }
      ],
      "name": "documentKeyPersonalRetrieved",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requester",
          "type": "address"
        }
      ],
      "name": "documentKeyShadowRetrievalError",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "documentKeyShadowRetrievalRequestsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getDocumentKeyShadowRetrievalRequest",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "bytes"
        },
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requester",
          "type": "address"
        },
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "isDocumentKeyShadowRetrievalResponseRequired",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "setDocumentKeyShadowRetrievalFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxDocumentKeyShadowRetrievalRequests",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "requester",
          "type": "address"
        }
      ],
      "name": "deleteDocumentKeyShadowRetrievalRequest",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806121bf833981016040819052905160008054600160a060020a031916331780825591928392600160a060020a031691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018054600160a060020a031916600160a060020a0392909216919091179055506702c68af0bb1400006004908155600555612112806100ad6000396000f3006080604052600436106100ed5763ffffffff60e060020a60003504166309b203e88114610163578063153f333b1461017d5780631b1e67aa146101945780632b4f030a146101bb5780633931a756146101f257806347f9af491461020a5780635aa8404c1461021f578063715018a61461023457806377dc782b146102495780637b97eecc146102875780638da5cb5b146102be5780638f32d59b146102ef5780639890220b14610304578063b9b36c4214610319578063d3cb594f1461035a578063e2f1d4f91461037e578063e3c20cf2146103a2578063f2fde38b146103b7578063f3d33171146103d8575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f6421000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016f57600080fd5b5061017b600435610479565b005b61017b600480359060248035908101910135610491565b3480156101a057600080fd5b506101a96108be565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101dc600160a060020a03600435166108c4565b6040805160ff9092168252519081900360200190f35b3480156101fe57600080fd5b5061017b600435610961565b34801561021657600080fd5b506101a9610979565b34801561022b57600080fd5b506101dc61097f565b34801561024057600080fd5b5061017b610a10565b34801561025557600080fd5b50610273600435600160a060020a0360243581169060443516610a7a565b604080519115158252519081900360200190f35b34801561029357600080fd5b5061017b600480359060248035600160a060020a03169160443591820191013560643560ff16610b59565b3480156102ca57600080fd5b506102d3610f64565b60408051600160a060020a039092168252519081900360200190f35b3480156102fb57600080fd5b50610273610f73565b34801561031057600080fd5b5061017b610f84565b34801561032557600080fd5b5061017b600480359060248035600160a060020a0316916044359160643580820192908101359160843590810191013561102a565b34801561036657600080fd5b5061017b600435600160a060020a03602435166114cf565b34801561038a57600080fd5b5061017b600435600160a060020a03602435166115c3565b3480156103ae57600080fd5b506101a96117d5565b3480156103c357600080fd5b5061017b600160a060020a03600435166117db565b3480156103e457600080fd5b506103f06004356117fa565b6040805184815282151591810191909152606060208083018281528551928401929092528451608084019186019080838360005b8381101561043c578181015183820152602001610424565b50505050905090810190601f1680156104695780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610481610f73565b151561048c57600080fd5b600555565b6000806004548034101515156104f1576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061057c92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604051855133955086945090925082915060208401908083835b602083106105e15780518252601f1990920191602091820191016105c2565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a0316939093149250610696915050576040805160e560020a62461bcd02815260206004820152602c60248201527f43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e60448201527f207075626c6963206b65792e0000000000000000000000000000000000000000606482015290519081900360840190fd5b60055460075410610717576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160208082018b90526c0100000000000000000000000033028284015282516034818403018152605490920192839052815191929182918401908083835b602083106107775780518252601f199092019160209182019101610758565b518151600019602094850361010090810a82019283169219939093169190911790925260408051969094018690039095206000818152600690935292909120600181810154939c50909a5060029083161590940201169190910415925061082b915050576040805160e560020a62461bcd02815260206004820181905260248201527f7265717565737465725075626c6963206c656e677468206973206e6f7420302e604482015290519081900360640190fd5b6108336118df565b878455610844600185018888611fac565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018590556040805189815233602082015281517fcce4f642c73cab3eae4e6ef3d59cc746b5e7d035447b1c226b5aafb4c0915709929181900390910190a15050505050505050565b60045481565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b505050506040513d602081101561095957600080fd5b505192915050565b610969610f73565b151561097457600080fd5b600455565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b505190505b90565b610a18610f73565b1515610a2357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080610a89856108c4565b6040805160208082018b90526c01000000000000000000000000600160a060020a038b160282840152825160348184030181526054909201928390528151939650909282918401908083835b60208310610af45780518252601f199092019160209182019101610ad5565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526006909252929020600881015492965094505060ff169150819050610b4e5750610b4e8160020184611aa1565b979650505050505050565b600080600080600087878080601f016020809104026020016040519081016040528093929190818152602001838380828437505084516040149350610bec92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6040805160208082018e90526c01000000000000000000000000600160a060020a038e16028284015282516034818403018152605490920192839052815191929182918401908083835b60208310610c555780518252601f199092019160209182019101610c36565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290206008810154929a5098505060ff169150819050610cbf5750846001018054600181600116156101000203166002900490506000145b15610cc957610f57565b610cd2336108c4565b93508888886040516020018084848082843782019150508260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d5a5780518252601f199092019160209182019101610d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250610dae85600201856002610d9b61097f565b60ff16811515610da757fe5b0486611b55565b91506001826002811115610dbe57fe5b1415610dc957610f57565b6002826002811115610dd757fe5b1415610e1057610de78686611d1a565b604051600160a060020a038b16908c906000805160206120c783398151915290600090a3610f57565b600885018054600160ff199091161761ff00191661010060ff8a16908102919091179091556040805160208101929092528082528101899052600160a060020a038b16908c907f72e320c3dc51ffa2396051490d47becef092ea73f671957a2dafda7e567aff51908c908c908c9080606081018585808284376040519201829003965090945050505050a3604080518c81526020810182815260018089018054600261010093821615939093026000190116919091049383018490527f1b73b7e683137318af868187d364e5f3d25de1c54913fb552bfbca47d44f3321938f93919290606083019084908015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050935050505060405180910390a15b5050505050505050505050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610feb576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f19350505050158015611026573d6000803e3d6000fd5b5050565b60008060008060008089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506110be92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b8d8d60405160200180836000191660001916815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061113e5780518252601f19909201916020918201910161111f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209650600660008860001916600019168152602001908152602001600020955085600101805460018160011615610100020316600290049050600014156111b0576114bf565b600886015460ff161515611234576040805160e560020a62461bcd02815260206004820152602260248201527f436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c65746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61123d336108c4565b945060ff851660020a93508b841615156112c7576040805160e560020a62461bcd02815260206004820152603260248201527f4b65792073657276657220646f6573206e6f74206861766520616e20656e747260448201527f7920696e207061727469636970616e74732e0000000000000000000000000000606482015290519081900360840190fd5b8b8b8b60405160200180848152602001838380828437820191505093505050506040516020818303038152906040526040518082805190602001908083835b602083106113255780518252601f199092019160209182019101611306565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600c8d01909252929020805492975095505015159150611390905057600b8601805460018101825560009182526020909120018390558b82556113ec565b60018201548416156113ec576040805160e560020a62461bcd02815260206004820152601e60248201527f506572736f6e616c2064617461206973206e6f74207265706f727465642e0000604482015290519081900360640190fd5b60028201805460ff198116600160ff9283168101909216179091558201805485179055604080518181529081018b9052600160a060020a038e16908f907f04ad358f86bfdff4535760571ca0e7940d88e47306f2df3fc9ed9247039ecda7908e908e908e908e908060208101606082018787808284379091018481038352858152602001905085858082843760405192018290039850909650505050505050a360028201546008870154610100900460ff9081166000199282169290920116146114b5576114bf565b6114bf8787611d1a565b5050505050505050505050505050565b6000806114da610f73565b15156114e557600080fd5b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015282516034818403018152605490920192839052815191929182918401908083835b6020831061154e5780518252601f19909201916020918201910161152f565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290209195509093506115999250849150839050611d1a565b604051600160a060020a0384169085906000805160206120c783398151915290600090a350505050565b6040805160208082018590526c01000000000000000000000000600160a060020a03851602828401528251603481840301815260549092019283905281516000938493849384938493849392909182918401908083835b602083106116395780518252601f19909201916020918201910161161a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209550600660008760001916600019168152602001908152602001600020945084600101805460018160011615610100020316600290049050600014156116ab576117cb565b6116b4336108c4565b600886015490945060ff16151561172d5760001960010292506116df85600201856002610d9b61097f565b915060018260028111156116ef57fe5b14156116fa576117cb565b6117048686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a36117cb565b50600984015460ff841660020a90811615611747576117cb565b60098501805482179055600a8501805460ff8082166001011660ff19909116179055600261177361097f565b60ff1681151561177f57fe5b600a87015491900460010160ff9081169116101561179c576117cb565b6117a68686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a35b5050505050505050565b60075490565b6117e3610f73565b15156117ee57600080fd5b6117f781611e1f565b50565b60006060600080600060078681548110151561181257fe5b60009182526020808320909101548083526006825260409283902080546008820154600180840180548851601f6002948316156101000260001901909216939093049081018890048802830188019098528782529498509296509094929360ff9091169284918301828280156118c95780601f1061189e576101008083540402835291602001916118c9565b820191906000526020600020905b8154815290600101906020018083116118ac57829003601f168201915b5050505050915094509450945050509193909250565b6000806000806000806118f061097f565b95503494508560ff168581151561190357fe5b049350600092505b6001860360ff168360ff1610156119e257600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b505050506040513d60208110156119af57600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061190b565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015611a4f57600080fd5b505af1158015611a63573d6000803e3d6000fd5b505050506040513d6020811015611a7957600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d6020811015611b2357600080fd5b505185549092508214611b395760019250611b4d565b50600184015460ff841660020a9081161592505b505092915050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b505160028a015490945060ff161515611bf557838955611c07565b88548414611c0757611c078985611e9c565b600189015460ff891660020a9350831615611c255760019450611d0e565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff199283161790925584549382168301918216931683179093559193501415611c905760058901805460018101825560009182526020909120018690555b600489015460ff90811690831610611cd05760048901805460ff191660ff848116919091179091556000198301811690881611611cd05760009450611d0e565b600289015460ff16611ce061097f565b60048b0154919003915060001960ff91821683010181169088161115611d095760029450611d0e565b600194505b50505050949350505050565b60005b600b820154811015611d785781600c01600083600b0183815481101515611d4057fe5b600091825260208083209091015483528201929092526040018120818155600180820192909255600201805460ff1916905501611d1d565b611d8482600201611ed8565b600083815260066020526040812081815590611da3600183018261202a565b6000600283018181556003840182905560048401805460ff19908116909155600685018054909116905590611ddb600785018261206e565b505060088201805461ffff19169055600060098301819055600a8301805460ff19169055611e0d90600b84019061206e565b5050611e1a600784611f29565b505050565b600160a060020a0381161515611e3457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611ea582611ed8565b80825560006001830181905560028301805460ff199081169091556004840180549091169055611e1a600584018261208c565b60005b6005820154811015611026578160030160008360050183815481101515611efe57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101611edb565b60005b8254811015611e1a5782548290849083908110611f4557fe5b6000918252602090912001541415611fa457825483906000198101908110611f6957fe5b90600052602060002001548382815481101515611f8257fe5b600091825260209091200155825460001901611f9e848261208c565b50611e1a565b600101611f2c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fed5782800160ff1982351617855561201a565b8280016001018555821561201a579182015b8281111561201a578235825591602001919060010190611fff565b506120269291506120ac565b5090565b50805460018160011615610100020316600290046000825580601f1061205057506117f7565b601f0160209004906000526020600020908101906117f791906120ac565b50805460008255906000526020600020908101906117f791906120ac565b815481835581811115611e1a57600083815260209020611e1a9181019083015b610a0d91905b8082111561202657600081556001016120b256000fdd54511745997b3c6f05f62e17c608b6d402b5d02dfa60009997c1ae89edc2a165627a7a723058206cd986bfe4f365f10d89388e054e962338796eb932d9403278121b3d0d2204e90029",
  "deployedBytecode": "0x6080604052600436106100ed5763ffffffff60e060020a60003504166309b203e88114610163578063153f333b1461017d5780631b1e67aa146101945780632b4f030a146101bb5780633931a756146101f257806347f9af491461020a5780635aa8404c1461021f578063715018a61461023457806377dc782b146102495780637b97eecc146102875780638da5cb5b146102be5780638f32d59b146102ef5780639890220b14610304578063b9b36c4214610319578063d3cb594f1461035a578063e2f1d4f91461037e578063e3c20cf2146103a2578063f2fde38b146103b7578063f3d33171146103d8575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f6421000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016f57600080fd5b5061017b600435610479565b005b61017b600480359060248035908101910135610491565b3480156101a057600080fd5b506101a96108be565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101dc600160a060020a03600435166108c4565b6040805160ff9092168252519081900360200190f35b3480156101fe57600080fd5b5061017b600435610961565b34801561021657600080fd5b506101a9610979565b34801561022b57600080fd5b506101dc61097f565b34801561024057600080fd5b5061017b610a10565b34801561025557600080fd5b50610273600435600160a060020a0360243581169060443516610a7a565b604080519115158252519081900360200190f35b34801561029357600080fd5b5061017b600480359060248035600160a060020a03169160443591820191013560643560ff16610b59565b3480156102ca57600080fd5b506102d3610f64565b60408051600160a060020a039092168252519081900360200190f35b3480156102fb57600080fd5b50610273610f73565b34801561031057600080fd5b5061017b610f84565b34801561032557600080fd5b5061017b600480359060248035600160a060020a0316916044359160643580820192908101359160843590810191013561102a565b34801561036657600080fd5b5061017b600435600160a060020a03602435166114cf565b34801561038a57600080fd5b5061017b600435600160a060020a03602435166115c3565b3480156103ae57600080fd5b506101a96117d5565b3480156103c357600080fd5b5061017b600160a060020a03600435166117db565b3480156103e457600080fd5b506103f06004356117fa565b6040805184815282151591810191909152606060208083018281528551928401929092528451608084019186019080838360005b8381101561043c578181015183820152602001610424565b50505050905090810190601f1680156104695780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610481610f73565b151561048c57600080fd5b600555565b6000806004548034101515156104f1576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061057c92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604051855133955086945090925082915060208401908083835b602083106105e15780518252601f1990920191602091820191016105c2565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a0316939093149250610696915050576040805160e560020a62461bcd02815260206004820152602c60248201527f43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e60448201527f207075626c6963206b65792e0000000000000000000000000000000000000000606482015290519081900360840190fd5b60055460075410610717576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160208082018b90526c0100000000000000000000000033028284015282516034818403018152605490920192839052815191929182918401908083835b602083106107775780518252601f199092019160209182019101610758565b518151600019602094850361010090810a82019283169219939093169190911790925260408051969094018690039095206000818152600690935292909120600181810154939c50909a5060029083161590940201169190910415925061082b915050576040805160e560020a62461bcd02815260206004820181905260248201527f7265717565737465725075626c6963206c656e677468206973206e6f7420302e604482015290519081900360640190fd5b6108336118df565b878455610844600185018888611fac565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018590556040805189815233602082015281517fcce4f642c73cab3eae4e6ef3d59cc746b5e7d035447b1c226b5aafb4c0915709929181900390910190a15050505050505050565b60045481565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b505050506040513d602081101561095957600080fd5b505192915050565b610969610f73565b151561097457600080fd5b600455565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b505190505b90565b610a18610f73565b1515610a2357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080610a89856108c4565b6040805160208082018b90526c01000000000000000000000000600160a060020a038b160282840152825160348184030181526054909201928390528151939650909282918401908083835b60208310610af45780518252601f199092019160209182019101610ad5565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526006909252929020600881015492965094505060ff169150819050610b4e5750610b4e8160020184611aa1565b979650505050505050565b600080600080600087878080601f016020809104026020016040519081016040528093929190818152602001838380828437505084516040149350610bec92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6040805160208082018e90526c01000000000000000000000000600160a060020a038e16028284015282516034818403018152605490920192839052815191929182918401908083835b60208310610c555780518252601f199092019160209182019101610c36565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290206008810154929a5098505060ff169150819050610cbf5750846001018054600181600116156101000203166002900490506000145b15610cc957610f57565b610cd2336108c4565b93508888886040516020018084848082843782019150508260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d5a5780518252601f199092019160209182019101610d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250610dae85600201856002610d9b61097f565b60ff16811515610da757fe5b0486611b55565b91506001826002811115610dbe57fe5b1415610dc957610f57565b6002826002811115610dd757fe5b1415610e1057610de78686611d1a565b604051600160a060020a038b16908c906000805160206120c783398151915290600090a3610f57565b600885018054600160ff199091161761ff00191661010060ff8a16908102919091179091556040805160208101929092528082528101899052600160a060020a038b16908c907f72e320c3dc51ffa2396051490d47becef092ea73f671957a2dafda7e567aff51908c908c908c9080606081018585808284376040519201829003965090945050505050a3604080518c81526020810182815260018089018054600261010093821615939093026000190116919091049383018490527f1b73b7e683137318af868187d364e5f3d25de1c54913fb552bfbca47d44f3321938f93919290606083019084908015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050935050505060405180910390a15b5050505050505050505050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610feb576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f19350505050158015611026573d6000803e3d6000fd5b5050565b60008060008060008089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506110be92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b8d8d60405160200180836000191660001916815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061113e5780518252601f19909201916020918201910161111f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209650600660008860001916600019168152602001908152602001600020955085600101805460018160011615610100020316600290049050600014156111b0576114bf565b600886015460ff161515611234576040805160e560020a62461bcd02815260206004820152602260248201527f436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c65746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61123d336108c4565b945060ff851660020a93508b841615156112c7576040805160e560020a62461bcd02815260206004820152603260248201527f4b65792073657276657220646f6573206e6f74206861766520616e20656e747260448201527f7920696e207061727469636970616e74732e0000000000000000000000000000606482015290519081900360840190fd5b8b8b8b60405160200180848152602001838380828437820191505093505050506040516020818303038152906040526040518082805190602001908083835b602083106113255780518252601f199092019160209182019101611306565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600c8d01909252929020805492975095505015159150611390905057600b8601805460018101825560009182526020909120018390558b82556113ec565b60018201548416156113ec576040805160e560020a62461bcd02815260206004820152601e60248201527f506572736f6e616c2064617461206973206e6f74207265706f727465642e0000604482015290519081900360640190fd5b60028201805460ff198116600160ff9283168101909216179091558201805485179055604080518181529081018b9052600160a060020a038e16908f907f04ad358f86bfdff4535760571ca0e7940d88e47306f2df3fc9ed9247039ecda7908e908e908e908e908060208101606082018787808284379091018481038352858152602001905085858082843760405192018290039850909650505050505050a360028201546008870154610100900460ff9081166000199282169290920116146114b5576114bf565b6114bf8787611d1a565b5050505050505050505050505050565b6000806114da610f73565b15156114e557600080fd5b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015282516034818403018152605490920192839052815191929182918401908083835b6020831061154e5780518252601f19909201916020918201910161152f565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290209195509093506115999250849150839050611d1a565b604051600160a060020a0384169085906000805160206120c783398151915290600090a350505050565b6040805160208082018590526c01000000000000000000000000600160a060020a03851602828401528251603481840301815260549092019283905281516000938493849384938493849392909182918401908083835b602083106116395780518252601f19909201916020918201910161161a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209550600660008760001916600019168152602001908152602001600020945084600101805460018160011615610100020316600290049050600014156116ab576117cb565b6116b4336108c4565b600886015490945060ff16151561172d5760001960010292506116df85600201856002610d9b61097f565b915060018260028111156116ef57fe5b14156116fa576117cb565b6117048686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a36117cb565b50600984015460ff841660020a90811615611747576117cb565b60098501805482179055600a8501805460ff8082166001011660ff19909116179055600261177361097f565b60ff1681151561177f57fe5b600a87015491900460010160ff9081169116101561179c576117cb565b6117a68686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a35b5050505050505050565b60075490565b6117e3610f73565b15156117ee57600080fd5b6117f781611e1f565b50565b60006060600080600060078681548110151561181257fe5b60009182526020808320909101548083526006825260409283902080546008820154600180840180548851601f6002948316156101000260001901909216939093049081018890048802830188019098528782529498509296509094929360ff9091169284918301828280156118c95780601f1061189e576101008083540402835291602001916118c9565b820191906000526020600020905b8154815290600101906020018083116118ac57829003601f168201915b5050505050915094509450945050509193909250565b6000806000806000806118f061097f565b95503494508560ff168581151561190357fe5b049350600092505b6001860360ff168360ff1610156119e257600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b505050506040513d60208110156119af57600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061190b565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015611a4f57600080fd5b505af1158015611a63573d6000803e3d6000fd5b505050506040513d6020811015611a7957600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d6020811015611b2357600080fd5b505185549092508214611b395760019250611b4d565b50600184015460ff841660020a9081161592505b505092915050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b505160028a015490945060ff161515611bf557838955611c07565b88548414611c0757611c078985611e9c565b600189015460ff891660020a9350831615611c255760019450611d0e565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff199283161790925584549382168301918216931683179093559193501415611c905760058901805460018101825560009182526020909120018690555b600489015460ff90811690831610611cd05760048901805460ff191660ff848116919091179091556000198301811690881611611cd05760009450611d0e565b600289015460ff16611ce061097f565b60048b0154919003915060001960ff91821683010181169088161115611d095760029450611d0e565b600194505b50505050949350505050565b60005b600b820154811015611d785781600c01600083600b0183815481101515611d4057fe5b600091825260208083209091015483528201929092526040018120818155600180820192909255600201805460ff1916905501611d1d565b611d8482600201611ed8565b600083815260066020526040812081815590611da3600183018261202a565b6000600283018181556003840182905560048401805460ff19908116909155600685018054909116905590611ddb600785018261206e565b505060088201805461ffff19169055600060098301819055600a8301805460ff19169055611e0d90600b84019061206e565b5050611e1a600784611f29565b505050565b600160a060020a0381161515611e3457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611ea582611ed8565b80825560006001830181905560028301805460ff199081169091556004840180549091169055611e1a600584018261208c565b60005b6005820154811015611026578160030160008360050183815481101515611efe57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101611edb565b60005b8254811015611e1a5782548290849083908110611f4557fe5b6000918252602090912001541415611fa457825483906000198101908110611f6957fe5b90600052602060002001548382815481101515611f8257fe5b600091825260209091200155825460001901611f9e848261208c565b50611e1a565b600101611f2c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fed5782800160ff1982351617855561201a565b8280016001018555821561201a579182015b8281111561201a578235825591602001919060010190611fff565b506120269291506120ac565b5090565b50805460018160011615610100020316600290046000825580601f1061205057506117f7565b601f0160209004906000526020600020908101906117f791906120ac565b50805460008255906000526020600020908101906117f791906120ac565b815481835581811115611e1a57600083815260209020611e1a9181019083015b610a0d91905b8082111561202657600081556001016120b256000fdd54511745997b3c6f05f62e17c608b6d402b5d02dfa60009997c1ae89edc2a165627a7a723058206cd986bfe4f365f10d89388e054e962338796eb932d9403278121b3d0d2204e90029",
  "sourceMap": "906:15664:4:-;;;3245:210;8:9:-1;5:2;;;30:1;27;20:12;5:2;3245:210:4;;;;;;;;;;;;;;;;509:6:12;:19;;-1:-1:-1;;;;;;509:19:12;518:10;509:19;;;;3245:210:4;;;;-1:-1:-1;;;;;572:6:12;;509;539:40;;509:6;;539:40;2548:19:8;:45;;-1:-1:-1;;;;;;2548:45:8;-1:-1:-1;;;;;2548:45:8;;;;;;;;;;-1:-1:-1;3387:10:4;3355:29;:42;;;3407:37;:41;906:15664;;;-1:-1:-1;906:15664:4;;",
  "deployedSourceMap": "906:15664:4:-;;;;;;;;;-1:-1:-1;;;906:15664:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3574:44;;;-1:-1:-1;;;;;3574:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14745:170:4;;;;;;;3671:2056;;;;;;;;;;;;;;;;;16075:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16075:44:4;;;;;;;;;;;;;;;;;;;;2843:166:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2843:166:8;-1:-1:-1;;;;;2843:166:8;;;;;;;;;;;;;;;;;;;;;;;;14531:150:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14531:150:4;;;;;16280:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16280:52:4;;;;2644:140:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2644:140:8;;;;1273:127:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:127:12;;;;13799:640:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13799:640:4;;;-1:-1:-1;;;;;13799:640:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;5792:1893;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5792:1893:4;;;;;;;;-1:-1:-1;;;;;5792:1893:4;;;;;;;;;;;;;;;;639:70:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;639:70:12;;;;;;;;-1:-1:-1;;;;;639:70:12;;;;;;;;;;;;;;926:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;926:83:12;;;;3059:199:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3059:199:8;;;;7754:2204:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7754:2204:4;;;;;;;;-1:-1:-1;;;;;7754:2204:4;;;;;;;;;;;;;;;;;;;;;;;;;;14975:466;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14975:466:4;;;-1:-1:-1;;;;;14975:466:4;;;;;10035:2871;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10035:2871:4;;;-1:-1:-1;;;;;10035:2871:4;;;;;12981:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12981:152:4;;;;1561:101:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1561:101:12;-1:-1:-1;;;;;1561:101:12;;;;;13283:444:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13283:444:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13283:444:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:170;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;14860:37:4;:48;14745:170::o;3671:2056::-;4098:19;4182:49;3787:29;;2216:6:8;2203:9;:19;;2195:64;;;;;;;-1:-1:-1;;;;;2195:64:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:15:4;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3879:15:4;;1874:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1947:20:4;;;;2020:10;;-1:-1:-1;1957:9:4;;-1:-1:-1;1947:20:4;;-1:-1:-1;1947:20:4;;-1:-1:-1;1947:20:4;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;1947:20:4;;;;;;;;;;-1:-1:-1;;;;;1942:73:4;1934:96;;;;;-1:-1:-1;1926:174:4;;-1:-1:-1;;1926:174:4;;;;-1:-1:-1;;;;;1926:174:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4010:37;;3962:38;:45;:85;3954:133;;;;;-1:-1:-1;;;;;3954:133:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4130:41;;;;;;;;;;;4160:10;4130:41;;;;;;;22:32:-1;26:21;;;22:32;6:49;;4130:41:4;;;;;;;;4120:52;;4130:41;;;;;4120:52;;;;4130:41;4120:52;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;4120:52:4;;;;;;;;;;;;;-1:-1:-1;4234:47:4;;;:34;:47;;;;;;;274:1:-1;4299:23:4;;;:30;4120:52;;-1:-1:-1;4234:47:4;;-1:-1:-1;4299:30:4;;;;;;;;;;;;;;:35;;-1:-1:-1;4291:80:4;;-1:-1:-1;;4291:80:4;;;;-1:-1:-1;;;;;4291:80:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4381:9;:7;:9::i;:::-;5494:33;;;5537:41;:23;;;5563:15;;5537:41;:::i;:::-;-1:-1:-1;5588:38:4;27:10:-1;;39:1;23:18;;45:23;;-1:-1;5588:56:4;;;;;;;;;5660:60;;;;;;5709:10;5588:56;5660:60;;;;;;;;;;;;;;;;2449:1:8;2269;3671:2056:4;;;;;;:::o;16075:44::-;;;;:::o;2843:166:8:-;2946:19;;2933:69;;;;;;-1:-1:-1;;;;;2933:69:8;;;;;;;;;2909:5;;2946:19;;;;;2933:58;;:69;;;;;;;;;;;;;;;2909:5;2946:19;2933:69;;;5:2:-1;;;;30:1;27;20:12;5:2;2933:69:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2933:69:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2933:69:8;;2843:166;-1:-1:-1;;2843:166:8:o;14531:150:4:-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;14636:29:4;:38;14531:150::o;16280:52::-;;;;:::o;2644:140:8:-;2729:19;;2716:61;;;;;;;;2692:5;;-1:-1:-1;;;;;2729:19:8;;2716:59;;:61;;;;;;;;;;;;;;2692:5;2729:19;2716:61;;;5:2:-1;;;;30:1;27;20:12;5:2;2716:61:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2716:61:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2716:61:8;;-1:-1:-1;2644:140:8;;:::o;1273:127:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1367:1;1351:6;;1330:40;;-1:-1:-1;;;;;1351:6:12;;;;1330:40;;1367:1;;1330:40;1393:1;1376:19;;-1:-1:-1;;1376:19:12;;;1273:127::o;13799:640:4:-;13959:4;13979:20;14039:19;14122:49;14002:27;14019:9;14002:16;:27::i;:::-;14071:40;;;;;;;;;;;-1:-1:-1;;;;;14071:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;14071:40:4;;;;;;;;14061:51;;13979:50;;-1:-1:-1;14071:40:4;;;;14061:51;;;;14071:40;14061:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14061:51:4;;;;;;;;;;;;;-1:-1:-1;14174:47:4;;;:34;:47;;;;;;14314:34;;;;14061:51;;-1:-1:-1;14174:47:4;-1:-1:-1;;14314:34:4;;;-1:-1:-1;14314:34:4;;-1:-1:-1;14314:118:4;;;14364:68;14383:7;:32;;14417:14;14364:18;:68::i;:::-;14307:125;13799:640;-1:-1:-1;;;;;;;13799:640:4:o;5792:1893::-;6026:19;6109:49;6365:20;6426:22;6512:37;5958:11;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;6058:40:4;;;;;;;;;;;-1:-1:-1;;;;;6058:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6058:40:4;;;;;;;;6048:51;;6058:40;;;;;6048:51;;;;6058:40;6048:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;6048:51:4;;;;;;;;;;;;;-1:-1:-1;6161:47:4;;;:34;:47;;;;;;6222:34;;;;6048:51;;-1:-1:-1;6161:47:4;-1:-1:-1;;6222:34:4;;;-1:-1:-1;6222:34:4;;-1:-1:-1;6222:73:4;;;6260:7;:23;;:30;;;;;;;;;;;;;;;;6294:1;6260:35;6222:73;6218:110;;;6311:7;;6218:110;6388:28;6405:10;6388:16;:28::i;:::-;6365:51;;6478:11;;6491:9;6461:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6461:40:4;;;6451:51;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6451:51:4;;;;;;;;;;;;;;;;6426:76;;6552:152;6580:7;:32;;6626:14;6674:1;6654:17;:15;:17::i;:::-;:21;;;;;;;;;;6689:14;6552;:152::i;:::-;6512:192;-1:-1:-1;6796:27:4;6771:21;:52;;;;;;;;;6767:112;;;6862:7;;6767:112;7005:26;6980:21;:51;;;;;;;;;6976:236;;;7047:60;7086:11;7099:7;7047:38;:60::i;:::-;7126:55;;-1:-1:-1;;;;;7126:55:4;;;7158:11;;-1:-1:-1;;;;;;;;;;;7126:55:4;;;;7195:7;;6976:236;7264:34;;;:41;;7301:4;-1:-1:-1;;7264:41:4;;;;-1:-1:-1;;7315:29:4;7264:41;;7315:29;;;;;;;;;;;;7465:123;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7465:123:4;;;7505:11;;7465:123;;7553:11;;7465:123;;7315:29;;7465:123;;;;7553:11;7465:123;;7553:11;7465:123;;;;;;;;;;-1:-1:-1;7465:123:4;;-1:-1:-1;;;;;7465:123:4;7603:75;;;;;;;;;;;;7654:23;;;;7603:75;;;;;;;;;;;;-1:-1:-1;;7603:75:4;;;;;;;;;;;;;;7641:11;;7654:23;;7603:75;;;;;7654:23;;7603:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2449:1:8;5792:1893:4;;;;;;;;;;;:::o;639:70:12:-;676:7;698:6;-1:-1:-1;;;;;698:6:12;639:70;:::o;926:83::-;965:4;998:6;-1:-1:-1;;;;;998:6:12;984:10;:20;;926:83::o;3059:199:8:-;3120:10;3093:15;3111:20;;;:8;:20;;;;;;3149:12;;;3141:38;;;;;-1:-1:-1;;;;;3141:38:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3198:10;3212:1;3189:20;;;:8;:20;;;;;;:24;;;3223:28;;;;;;3243:7;;3223:28;;3212:1;3223:28;3243:7;3198:10;3223:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3223:28:8;3059:199;:::o;7754:2204:4:-;8033:19;8116:49;8669:20;8730:21;8939:22;9032:51;7961:15;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;8082:11:4;8095:9;8065:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8065:40:4;-1:-1:-1;;;;;8065:40:4;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8065:40:4;;;8055:51;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8055:51:4;;;;;;;;;;;;;;;;8033:73;;8168:34;:47;8203:11;8168:47;;;;;;;;;;;;;;;;;8116:99;;8229:7;:23;;:30;;;;;;;;;;;;;;;;8263:1;8229:35;8225:72;;;8280:7;;8225:72;8383:34;;;;;;8375:81;;;;;;;-1:-1:-1;;;;;8375:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8692:28;8709:10;8692:16;:28::i;:::-;8669:51;-1:-1:-1;8755:28:4;;;;;;-1:-1:-1;8803:28:4;;;8802:35;;8794:98;;;;;-1:-1:-1;;;;;8794:98:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8991:12;9005:15;;8974:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8974:47:4;;;8964:58;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;8964:58:4;;;;;;;;;;;;;-1:-1:-1;9086:36:4;;;:20;;;:36;;;;;;9136:25;;8964:58;;-1:-1:-1;9086:36:4;-1:-1:-1;;9136:30:4;9132:278;;-1:-1:-1;9132:278:4;;-1:-1:-1;9132:278:4;9182:24;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9182:45:4;;;;;;;;;;;9241:40;;;9132:278;;;9321:21;;;;:37;;9320:44;9312:87;;;;;-1:-1:-1;;;;;9312:87:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;9447:26;;;:31;;-1:-1:-1;;9447:31:4;;9477:1;9447:31;;;;;;;;;;;;;9488:21;;:38;;;;;;9578:126;;;;;;;;;;;;-1:-1:-1;;;;;9578:126:4;;;9620:11;;9578:126;;9668:15;;9578:126;;9697:6;;;;9578:126;;;;;;;9668:15;9578:126;;9668:15;9578:126;;;;;;;;;;;;;;;;-1:-1:-1;9578:126:4;;;;;;;;;;;;;;-1:-1:-1;9578:126:4;;-1:-1:-1;;;;;;;9578:126:4;9792:26;;;;9771:17;;;;9792:26;9771:17;;9792:26;9771:17;;;-1:-1:-1;;9792:26:4;;;:30;;;;9771:51;;9767:88;;9838:7;;9767:88;9891:60;9930:11;9943:7;9891:38;:60::i;:::-;7754:2204;;;;;;;;;;;;;;:::o;14975:466::-;15111:19;15194:49;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;15143:40:4;;;;;;;;;;;-1:-1:-1;;;;;15143:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;15143:40:4;;;;;;;;15133:51;;15143:40;;;;;15133:51;;;;15143:40;15133:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15133:51:4;;;;;;;;;;;;;-1:-1:-1;15246:47:4;;;:34;:47;;;;;;15133:51;;-1:-1:-1;15246:47:4;;-1:-1:-1;15303:60:4;;-1:-1:-1;15133:51:4;;-1:-1:-1;15246:47:4;;-1:-1:-1;15303:38:4;:60::i;:::-;15379:55;;-1:-1:-1;;;;;15379:55:4;;;15411:11;;-1:-1:-1;;;;;;;;;;;15379:55:4;;;;14975:466;;;;:::o;10035:2871::-;10208:40;;;;;;;;;;;-1:-1:-1;;;;;10208:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;10208:40:4;;;;;;;;10198:51;;10176:19;;;;;;;;;;;;10208:40;;;;;10198:51;;;;10208:40;10198:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10198:51:4;;;;;;;;;;;;;;;;10176:73;;10311:34;:47;10346:11;10311:47;;;;;;;;;;;;;;;;;10259:99;;10372:7;:23;;:30;;;;;;;;;;;;;;;;10406:1;10372:35;10368:72;;;10423:7;;10368:72;10574:28;10591:10;10574:16;:28::i;:::-;10617:34;;;;10551:51;;-1:-1:-1;10617:34:4;;10616:35;10612:831;;;-1:-1:-1;;10724:75:4;;10698:101;;10854:169;10886:7;:32;;10936:14;10988:1;10968:17;:15;:17::i;10854:169::-;10813:210;-1:-1:-1;11151:27:4;11125:22;:53;;;;;;;;;11121:98;;;11198:7;;11121:98;11278:60;11317:11;11330:7;11278:38;:60::i;:::-;11357:55;;-1:-1:-1;;;;;11357:55:4;;;11389:11;;-1:-1:-1;;;;;;;;;;;11357:55:4;;;;11426:7;;10612:831;-1:-1:-1;12370:31:4;;;;12327:28;;;;;;12370:47;;12369:54;12365:91;;12439:7;;12365:91;12465:31;;;:48;;;;;;12523:36;;;:41;;;;;;-1:-1:-1;12523:41:4;;-1:-1:-1;;12523:41:4;;;;;;12680:1;12660:17;:15;:17::i;:::-;:21;;;;;;;;;12621:36;;;;12660:21;;;12684:1;12660:25;12621:64;;;;:36;;:64;12617:101;;;12701:7;;12617:101;12769:60;12808:11;12821:7;12769:38;:60::i;:::-;12844:55;;-1:-1:-1;;;;;12844:55:4;;;12876:11;;-1:-1:-1;;;;;;;;;;;12844:55:4;;;;10035:2871;;;;;;;;;:::o;12981:152::-;13081:38;:45;12981:152;:::o;1561:101:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1629:28;1648:8;1629:18;:28::i;:::-;1561:101;:::o;13283:444:4:-;13367:7;13376:5;13383:4;13399:19;13476:49;13421:38;13460:5;13421:45;;;;;;;;;;;;;;;;;;;;;;13528:47;;;:34;:47;;;;;;;13606:19;;13676:34;;;;13639:23;;;;13585:135;;;;;;;;;;13676:34;13585:135;-1:-1:-1;;13585:135:4;;;;;;;;;;;;;;;;;;;;;;;;;;13421:45;;-1:-1:-1;13528:47:4;;-1:-1:-1;13606:19:4;;13639:23;;13676:34;;;;;13639:23;;13585:135;;13639:23;13585:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13283:444;;;;;;;:::o;3326:521:8:-;3364:11;3405:14;3441:13;3486:7;3533:17;3709:21;3378:17;:15;:17::i;:::-;3364:31;;3422:9;3405:26;;3466:5;3457:14;;:6;:14;;;;;;;;3441:30;;3496:1;3486:11;;3481:218;3511:1;3503:5;:9;3499:13;;:1;:13;;;3481:218;;;3566:19;;3553:56;;;;;;;;;;;;;;;-1:-1:-1;;;;;3566:19:8;;;;3553:53;;:56;;;;;;;;;;;;;;;3566:19;;3553:56;;;5:2:-1;;;;30:1;27;20:12;5:2;3553:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3553:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:56:8;-1:-1:-1;;;;;3623:19:8;;;;;;:8;3553:56;3623:19;;;;:28;;;;;;3674:14;;;;;-1:-1:-1;3514:3:8;;;;;3553:56;-1:-1:-1;3481:218:8;;;3746:19;;3733:64;;;;;;;-1:-1:-1;;3787:9:8;;3733:64;;;;;;;-1:-1:-1;;;;;3746:19:8;;;;3733:53;;:64;;;;;;;;;;;;;;;3746:19;;3733:64;;;5:2:-1;;;;30:1;27;20:12;5:2;3733:64:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3733:64:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3733:64:8;-1:-1:-1;;;;;3807:23:8;;;;;:8;3733:64;3807:23;;;;:33;;;;;;;;-1:-1:-1;;;;;3326:521:8:o;3920:618::-;4029:4;4120:31;4402:21;4167:19;;;;;;;;;-1:-1:-1;;;;;4167:19:8;-1:-1:-1;;;;;4154:54:8;;:56;;;;;-1:-1:-1;;;4154:56:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4154:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4154:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4154:56:8;4251:33;;4154:56;;-1:-1:-1;4224:60:8;;4220:102;;4307:4;4300:11;;;;4220:102;-1:-1:-1;4435:1:8;4475:33;;;4427:28;;;;;4475:49;;;4474:56;;-1:-1:-1;3920:618:8;;;;;;;:::o;4584:1938::-;4752:15;4874:31;5313:21;5535;6259:20;4921:19;;;;;;;;;-1:-1:-1;;;;;4921:19:8;-1:-1:-1;;;;;4908:54:8;;:56;;;;;-1:-1:-1;;;4908:56:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4908:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4908:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4908:56:8;4978:34;;;;4908:56;;-1:-1:-1;4978:34:8;;:39;4974:276;;;5033:59;;;4974:276;;;5113:33;;:60;;5109:141;;5189:50;5204:9;5215:23;5189:14;:50::i;:::-;5346:1;5382:33;;;5338:28;;;;;;-1:-1:-1;5382:49:8;;5381:56;5377:121;;5460:27;5453:34;;;;5377:121;5559:36;;;;:26;;;:36;;;;;;;;5609:33;;;:50;;;;;;5669:34;;;:39;;5559:36;5669:39;;;;;;;-1:-1:-1;;5669:39:8;;;;;;;5718:54;;5559:36;;;:40;;5718:54;;;;;;;;;;5559:40;;-1:-1:-1;5786:20:8;5782:85;;;5822:19;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;5822:34:8;;;;;;;;;;;5782:85;5899:28;;;;;;;;5880:47;;;;5876:309;;5943:28;;;:46;;-1:-1:-1;;5943:46:8;;;;;;;;;;;;-1:-1:-1;;6089:19:8;;6076:32;;;;;;6072:103;;6135:25;6128:32;;;;6072:103;6302:34;;;;;;6282:17;:15;:17::i;:::-;6362:28;;;;6282:54;;;;-1:-1:-1;;;6362:28:8;;;;:45;;:49;6350:61;;;;;;6346:125;;;6434:26;6427:33;;;;6346:125;6488:27;6481:34;;4584:1938;;;;;;;;;;;:::o;15540:486:4:-;15683:6;15678:140;15699:24;;;:31;15695:35;;15678:140;;;15758:7;:20;;:49;15779:7;:24;;15804:1;15779:27;;;;;;;;;;;;;;;;;;;;;;15758:49;;;;;;;;;;;;15751:56;;;;;;;;;;;;;;;-1:-1:-1;;15751:56:4;;;15732:3;15678:140;;;15827:48;15842:7;:32;;15827:14;:48::i;:::-;15892:47;;;;:34;:47;;;;;15885:54;;;15892:47;15885:54;;;;15892:47;15885:54;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15885:54:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;15885:54:4;;;;;-1:-1:-1;;15885:54:4;;;;;;;;;;;;;;;-1:-1:-1;;15885:54:4;;;;;;;;;;:::i;:::-;;;15950:69;15967:38;16007:11;15950:16;:69::i;:::-;15540:486;;;:::o;1796:169:12:-;-1:-1:-1;;;;;1865:22:12;;;;1857:31;;;;;;1920:6;;;1899:38;;-1:-1:-1;;;;;1899:38:12;;;;1920:6;;;1899:38;;;1943:6;:17;;-1:-1:-1;;1943:17:12;-1:-1:-1;;;;;1943:17:12;;;;;;;;;;1796:169::o;7212:389:8:-;7323:25;7338:9;7323:14;:25::i;:::-;7358:59;;;:33;7427;;;:37;;;7474:34;;;:38;;-1:-1:-1;;7474:38:8;;;;;;7522:28;;;:32;;;;;;;7564:30;:19;;;7358:33;7564:30;:::i;6568:224::-;6652:9;6647:139;6671:19;;;:26;6667:30;;6647:139;;;6725:9;:26;;:50;6752:9;:19;;6772:1;6752:22;;;;;;;;;;;;;;;;;;;;;;6725:50;;;;;;;;;;;;6718:57;;-1:-1:-1;;6718:57:8;;;;6699:3;6647:139;;6836:345;6931:6;6926:249;6947:15;;6943:19;;6926:249;;;6987:11;;7002:7;;6987:8;;6996:1;;6987:11;;;;;;;;;;;;;;;;:22;6983:182;;;7052:15;;7043:8;;-1:-1:-1;;7052:19:8;;;7043:29;;;;;;;;;;;;;;7029:8;7038:1;7029:11;;;;;;;;;;;;;;;;;;;:43;7108:15;;-1:-1:-1;;7108:19:8;7090:37;7108:8;:19;7090:37;:::i;:::-;;7145:5;;6983:182;6964:3;;6926:249;;906:15664:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;906:15664:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;906:15664:4;;;-1:-1:-1;906:15664:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "//! The Secret Store document key shadow retrieval service contract.\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 \"../interfaces/SecretStoreService.sol\";\nimport \"./SecretStoreServiceBase.sol\";\n\n\n/// Document Key shadow retrieval service contract.\n/* solium-disable-next-line */\ncontract SecretStoreDocumentKeyShadowRetrievalService is SecretStoreServiceBase, DocumentKeyShadowRetrievalServiceClientApi, DocumentKeyShadowRetrievalServiceKeyServerApi {\n    /// Document key shadow retrieval request.\n    struct DocumentKeyShadowRetrievalRequest {\n        // public portion-related data\n        bytes32 serverKeyId;\n        bytes requesterPublic;\n        RequestResponses commonRetrievalResponses;\n        bool isCommonRetrievalCompleted;\n        uint8 threshold;\n        // personal portion-related data\n        uint256 personalRetrievalErrors;\n        uint8 personalRetrievalErrorsCount;\n        bytes32[] personalDataKeys;\n        mapping (bytes32 => DocumentKeyShadowRetrievalData) personalData;\n    }\n\n    /// Document key retrieval data.\n    struct DocumentKeyShadowRetrievalData {\n        uint256 participants;\n        uint256 reported;\n        uint8 reportedCount;\n    }\n\n    //// Only pass when caller is the owner of given public key.\n    modifier onlyPublicOwner(bytes publicKey) {\n        require(address(uint(keccak256(publicKey)) & 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) == msg.sender,\n            \"Caller is not owner of the given public key.\"\n        );\n        _;\n    }\n\n    /// When document key common-portion retrieval request is received.\n    event DocumentKeyCommonRetrievalRequested(bytes32 serverKeyId, address requester);\n    /// When document key personal-portion retrieval request is received.\n    event DocumentKeyPersonalRetrievalRequested(bytes32 serverKeyId, bytes requesterPublic);\n    /// When document key common portion is retrieved. Ater this event s fired, wait for\n    /// exactly `threshold+1` `DocumentKeyPersonalRetrieved` events with the same `decryptedSecret` value.\n    event DocumentKeyCommonRetrieved(bytes32 indexed serverKeyId, address indexed requester, bytes commonPoint, uint8 threshold);\n    /// When document key personal portion is retrieved. After enough events are fired, use `secretstore_shadowDecrypt`\n    /// to decrypt document contents.\n    event DocumentKeyPersonalRetrieved(bytes32 indexed serverKeyId, address indexed requester, bytes decryptedSecret, bytes shadow);\n    /// When error occurs during document key retrieval.\n    event DocumentKeyShadowRetrievalError(bytes32 indexed serverKeyId, address indexed requester);\n\n    /// Constructor.\n    constructor(address keyServerSetAddressInit) SecretStoreServiceBase(keyServerSetAddressInit) public {\n        documentKeyShadowRetrievalFee = 200 finney;\n        maxDocumentKeyShadowRetrievalRequests = 4;\n    }\n\n    // === Interface methods ===\n\n    /// We do not support direct payments.\n    function() public payable {\n        revert(\"Direct payments are not supported!\");\n    }\n\n    /// Request document key retrieval.\n    function retrieveDocumentKeyShadow(bytes32 serverKeyId, bytes requesterPublic) external payable\n        whenFeePaid(documentKeyShadowRetrievalFee)\n        validPublic(requesterPublic)\n        onlyPublicOwner(requesterPublic)\n    {\n        // check maximum number of requests\n        require(documentKeyShadowRetrievalRequestsKeys.length < maxDocumentKeyShadowRetrievalRequests, \"Maximum number of requests reached.\");\n\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, msg.sender));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        require(request.requesterPublic.length == 0, \"requesterPublic length is not 0.\");\n        deposit();\n\n        // we do not know exact threshold value here && we can not blindly trust the first response\n        // => we should agree upon two values: threshold && document key itself\n        // => assuming that all authorities will eventually respond with value/error, we will wait for:\n        // 1) at least 50% + 1 authorities agreement on the same threshold value\n        // 2) after threshold is agreed, we will wait for threshold + 1 values of document key\n\n        // the data required to compute document key is the triple { commonPoint, encryptedPoint, shadowPoints[] }\n        // this data is computed on threshold + 1 nodes only\n        // retrieval consists of two phases:\n        // 1) every authority that is seeing retrieval request, publishes { commonPoint, encryptedPoint, threshold }\n        // 2) master node starts decryption session\n        // 2.1) every node participating in decryption session publishes { address[], shadow }\n        // 2.2) once there are threshold + 1 confirmations of { address[], shadow } from exactly address[] authorities, we are publishing the key\n\n        request.serverKeyId = serverKeyId;\n        request.requesterPublic = requesterPublic;\n        documentKeyShadowRetrievalRequestsKeys.push(retrievalId);\n\n        emit DocumentKeyCommonRetrievalRequested(serverKeyId, msg.sender);\n    }\n\n    /// Called when common data is reported by key server.\n    function documentKeyCommonRetrieved(\n        bytes32 serverKeyId,\n        address requester,\n        bytes commonPoint,\n        uint8 threshold) external validPublic(commonPoint)\n    {\n        // check if request still active\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, requester));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        if (request.isCommonRetrievalCompleted || request.requesterPublic.length == 0) {\n            return;\n        }\n\n        // insert response\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n        bytes32 commonResponse = keccak256(abi.encodePacked(commonPoint, threshold));\n        ResponseSupport commonResponseSupport = insertResponse(\n            request.commonRetrievalResponses,\n            keyServerIndex,\n            keyServersCount() / 2,\n            commonResponse);\n\n        // ...and check if there are enough support\n        if (commonResponseSupport == ResponseSupport.Unconfirmed) { // not confirmed (yet)\n            return;\n        }\n\n        // if common consensus isn't possible => personal retrieval is also impossible\n        if (commonResponseSupport == ResponseSupport.Impossible) {\n            clearDocumentKeyShadowRetrievalRequest(retrievalId, request);\n            emit DocumentKeyShadowRetrievalError(serverKeyId, requester);\n            return;\n        }\n\n        // else => remember required data\n        request.isCommonRetrievalCompleted = true;\n        request.threshold = threshold;\n\n        // ...and publish common data (this is also a signal to 'master' key server to start decryption)\n        emit DocumentKeyCommonRetrieved(\n            serverKeyId,\n            requester,\n            commonPoint,\n            threshold);\n        emit DocumentKeyPersonalRetrievalRequested(serverKeyId, request.requesterPublic);\n    }\n\n    /// Called when 'personal' data is reported by key server.\n    function documentKeyPersonalRetrieved(\n        bytes32 serverKeyId,\n        address requester,\n        uint256 participants,\n        bytes decryptedSecret,\n        bytes shadow) external\n        validPublic(decryptedSecret)\n    {\n        // check if request still active\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, requester));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        if (request.requesterPublic.length == 0) {\n            return;\n        }\n\n        // we do not accept personal data until common is retrieved\n        require(request.isCommonRetrievalCompleted, \"Common retrieval is not completed.\");\n\n        // there must be exactly threshold + 1 participated key servers\n        // TODO: require(request.threshold + 1 == participants.length);\n\n        // key server must have an entry in participants\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n        uint256 keyServerMask = (uint256(1) << keyServerIndex);\n        require((participants & keyServerMask) != 0, \"Key server does not have an entry in participants.\");\n\n        // insert new personal data\n        bytes32 personalDataId = keccak256(abi.encodePacked(participants, decryptedSecret));\n        DocumentKeyShadowRetrievalData storage personalData = request.personalData[personalDataId];\n        if (personalData.participants == 0) {\n            request.personalDataKeys.push(personalDataId);\n            personalData.participants = participants;\n        } else {\n            require((personalData.reported & keyServerMask) == 0, \"Personal data is not reported.\");\n        }\n\n        // remember result\n        personalData.reportedCount += 1;\n        personalData.reported |= keyServerMask;\n\n        // publish personal portion\n        emit DocumentKeyPersonalRetrieved(\n            serverKeyId,\n            requester,\n            decryptedSecret,\n            shadow);\n\n        // check if all participants have responded\n        if (request.threshold != personalData.reportedCount - 1) {\n            return;\n        }\n\n        // delete request\n        clearDocumentKeyShadowRetrievalRequest(retrievalId, request);\n    }\n\n    /// Called when error occurs during document key shadow retrieval.\n    function documentKeyShadowRetrievalError(bytes32 serverKeyId, address requester) external {\n        // check if request still active\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, requester));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        if (request.requesterPublic.length == 0) {\n            return;\n        }\n\n        // error on common data retrieval step is treated like a voting for non-existant common data\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n        if (!request.isCommonRetrievalCompleted) {\n            // insert response\n            bytes32 invalidResponse = bytes32(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);\n            ResponseSupport invalidResponseSupport = insertResponse(\n                request.commonRetrievalResponses,\n                keyServerIndex,\n                keyServersCount() / 2,\n                invalidResponse);\n\n            // ...and check if there are enough confirmations for invalid response\n            if (invalidResponseSupport == ResponseSupport.Unconfirmed) {\n                return;\n            }\n\n            // delete request and fire event\n            clearDocumentKeyShadowRetrievalRequest(retrievalId, request);\n            emit DocumentKeyShadowRetrievalError(serverKeyId, requester);\n            return;\n        }\n\n        // else error has occured during personal data retrieval\n        // this could be:\n        // 1) access denied error (because KS is out of sync?)\n        // 2) key has became irrecoverable\n        // 3) key server is cheating\n        // there's currently no strong criteria - when to stop retrying to serve request\n        // stopping it after first error isn't good, because this means that any KS can reject request\n        // waiting for N errors isn't good, because consensus set in decryption session is constructed\n        //   right after t+1 nodes have responded with AGREE => some of nodes (with bad connectivity) might be\n        //   'banned' from this session forever\n        // waiting for any threshold-related errors count will fail if this count is larger than N\n        // => let's wait for N/2+1 errors from different nodes\n        uint256 keyServerMask = uint256(1) << keyServerIndex;\n        if ((request.personalRetrievalErrors & keyServerMask) != 0) {\n            return;\n        }\n        request.personalRetrievalErrors |= keyServerMask;\n        request.personalRetrievalErrorsCount += 1;\n\n        // check if we have enough errors\n        if (request.personalRetrievalErrorsCount < keyServersCount() / 2 + 1) {\n            return;\n        }\n\n        // delete request and fire event\n        clearDocumentKeyShadowRetrievalRequest(retrievalId, request);\n        emit DocumentKeyShadowRetrievalError(serverKeyId, requester);\n    }\n\n    /// Get count of pending document key shadow retrieval requests.\n    function documentKeyShadowRetrievalRequestsCount() external view returns (uint256) {\n        return documentKeyShadowRetrievalRequestsKeys.length;\n    }\n\n    /// Get document key shadow retrieval request with given index.\n    /// Returns: (serverKeyId, requesterPublic, isCommonRetrievalCompleted)\n    function getDocumentKeyShadowRetrievalRequest(uint256 index) external view returns (bytes32, bytes, bool) {\n        bytes32 retrievalId = documentKeyShadowRetrievalRequestsKeys[index];\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        return (\n            request.serverKeyId,\n            request.requesterPublic,\n            request.isCommonRetrievalCompleted\n        );\n    }\n\n    /// Returs true if response from given keyServer is required.\n    function isDocumentKeyShadowRetrievalResponseRequired(bytes32 serverKeyId, address requester, address keyServer)\n        external\n        view\n        returns (bool)\n    {\n        uint8 keyServerIndex = requireKeyServer(keyServer);\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, requester));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        // response is always required when personal retrieval is requested\n        return request.isCommonRetrievalCompleted ||\n            isResponseRequired(request.commonRetrievalResponses, keyServerIndex);\n    }\n\n    // === Administrative methods ===\n\n    /// Set document key shadow retrieval fee.\n    function setDocumentKeyShadowRetrievalFee(uint256 newFee)\n        public\n        onlyOwner\n    {\n        documentKeyShadowRetrievalFee = newFee;\n    }\n\n    /// Set document key shadow retrieval requests limit.\n    function setMaxDocumentKeyShadowRetrievalRequests(uint256 newLimit)\n        public\n        onlyOwner\n    {\n        maxDocumentKeyShadowRetrievalRequests = newLimit;\n    }\n\n    /// Delete document key shadow retrieval request.\n    function deleteDocumentKeyShadowRetrievalRequest(bytes32 serverKeyId, address requester)\n        public\n        onlyOwner\n    {\n        bytes32 retrievalId = keccak256(abi.encodePacked(serverKeyId, requester));\n        DocumentKeyShadowRetrievalRequest storage request = documentKeyShadowRetrievalRequests[retrievalId];\n        clearDocumentKeyShadowRetrievalRequest(retrievalId, request);\n\n        emit DocumentKeyShadowRetrievalError(serverKeyId, requester);\n    }\n\n    // === Internal methods ===\n\n    /// Clear document key shadow retrieval request traces.\n    function clearDocumentKeyShadowRetrievalRequest(bytes32 retrievalId, DocumentKeyShadowRetrievalRequest storage request) private {\n        for (uint i = 0; i < request.personalDataKeys.length; ++i) {\n            delete request.personalData[request.personalDataKeys[i]];\n        }\n        clearResponses(request.commonRetrievalResponses);\n        delete documentKeyShadowRetrievalRequests[retrievalId];\n\n        removeRequestKey(documentKeyShadowRetrievalRequestsKeys, retrievalId);\n    }\n\n    /// Document key shadow retrieval fee.\n    uint256 public documentKeyShadowRetrievalFee;\n    /// Maximal number of active document key shadow retrieval requests. We're limiting this number to avoid\n    /// infinite gas costs of some functions.\n    uint256 public maxDocumentKeyShadowRetrievalRequests;\n\n    /// Pending store requests.\n    mapping (bytes32 => DocumentKeyShadowRetrievalRequest) private documentKeyShadowRetrievalRequests;\n    /// Pending store requests keys.\n    bytes32[] private documentKeyShadowRetrievalRequestsKeys;\n}\n",
  "sourcePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyShadowRetrievalService.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyShadowRetrievalService.sol",
    "exportedSymbols": {
      "SecretStoreDocumentKeyShadowRetrievalService": [
        1685
      ]
    },
    "id": 1686,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 873,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "709:24:4"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 874,
        "nodeType": "ImportDirective",
        "scope": 1686,
        "sourceUnit": 872,
        "src": "735:46:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 875,
        "nodeType": "ImportDirective",
        "scope": 1686,
        "sourceUnit": 3513,
        "src": "782:38:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 876,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "963:22:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 877,
            "nodeType": "InheritanceSpecifier",
            "src": "963:22:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 878,
              "name": "DocumentKeyShadowRetrievalServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 800,
              "src": "987:42:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyShadowRetrievalServiceClientApi_$800",
                "typeString": "contract DocumentKeyShadowRetrievalServiceClientApi"
              }
            },
            "id": 879,
            "nodeType": "InheritanceSpecifier",
            "src": "987:42:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 880,
              "name": "DocumentKeyShadowRetrievalServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 871,
              "src": "1031:45:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyShadowRetrievalServiceKeyServerApi_$871",
                "typeString": "contract DocumentKeyShadowRetrievalServiceKeyServerApi"
              }
            },
            "id": 881,
            "nodeType": "InheritanceSpecifier",
            "src": "1031:45:4"
          }
        ],
        "contractDependencies": [
          800,
          871,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Document Key shadow retrieval service contract.",
        "fullyImplemented": true,
        "id": 1685,
        "linearizedBaseContracts": [
          1685,
          871,
          800,
          3512,
          4823
        ],
        "name": "SecretStoreDocumentKeyShadowRetrievalService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest",
            "id": 903,
            "members": [
              {
                "constant": false,
                "id": 883,
                "name": "serverKeyId",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1220:19:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 882,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1220:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 885,
                "name": "requesterPublic",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1249:21:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 884,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1249:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 887,
                "name": "commonRetrievalResponses",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1280:41:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 886,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1280:16:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 889,
                "name": "isCommonRetrievalCompleted",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1331:31:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 888,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1331:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 891,
                "name": "threshold",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1372:15:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 890,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1372:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 893,
                "name": "personalRetrievalErrors",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1438:31:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 892,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1438:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 895,
                "name": "personalRetrievalErrorsCount",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1479:34:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 894,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1479:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 898,
                "name": "personalDataKeys",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1523:26:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 896,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 897,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1523:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 902,
                "name": "personalData",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1559:64:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                  "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData)"
                },
                "typeName": {
                  "id": 901,
                  "keyType": {
                    "id": 899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1568:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1559:51:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                    "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 900,
                    "name": "DocumentKeyShadowRetrievalData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 910,
                    "src": "1579:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyShadowRetrievalRequest",
            "nodeType": "StructDefinition",
            "scope": 1685,
            "src": "1130:500:4",
            "visibility": "public"
          },
          {
            "canonicalName": "SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData",
            "id": 910,
            "members": [
              {
                "constant": false,
                "id": 905,
                "name": "participants",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1721:20:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 904,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1721:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 907,
                "name": "reported",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1751:16:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 906,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1751:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 909,
                "name": "reportedCount",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1777:19:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 908,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1777:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyShadowRetrievalData",
            "nodeType": "StructDefinition",
            "scope": 1685,
            "src": "1673:130:4",
            "visibility": "public"
          },
          {
            "body": {
              "id": 931,
              "nodeType": "Block",
              "src": "1916:202:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 918,
                                        "name": "publicKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 912,
                                        "src": "1957:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 917,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4832,
                                      "src": "1947:9:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                        "typeString": "function () pure returns (bytes32)"
                                      }
                                    },
                                    "id": 919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1947:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1942:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1942:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3078303046464646464646464646464646464646464646464646464646464646464646464646464646464646",
                                "id": 921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1971:44:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                                  "typeString": "int_const 1461...(41 digits omitted)...2975"
                                },
                                "value": "0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                              },
                              "src": "1942:73:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1934:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1934:82:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 924,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4838,
                            "src": "2020:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2020:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1934:96:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e207075626c6963206b65792e",
                        "id": 927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2044:46:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c4c08dbf1eae093b7c103c8c106e333c95308b12597b5337d785f19995e420d",
                          "typeString": "literal_string \"Caller is not owner of the given public key.\""
                        },
                        "value": "Caller is not owner of the given public key."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c4c08dbf1eae093b7c103c8c106e333c95308b12597b5337d785f19995e420d",
                          "typeString": "literal_string \"Caller is not owner of the given public key.\""
                        }
                      ],
                      "id": 914,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "1926:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1926:174:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 929,
                  "nodeType": "ExpressionStatement",
                  "src": "1926:174:4"
                },
                {
                  "id": 930,
                  "nodeType": "PlaceholderStatement",
                  "src": "2110:1:4"
                }
              ]
            },
            "documentation": "/ Only pass when caller is the owner of given public key.",
            "id": 932,
            "name": "onlyPublicOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 913,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 912,
                  "name": "publicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 932,
                  "src": "1899:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 911,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:17:4"
            },
            "src": "1874:244:4",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "When document key common-portion retrieval request is received.",
            "id": 938,
            "name": "DocumentKeyCommonRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 934,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "2238:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 933,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 936,
                  "indexed": false,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "2259:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2259:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2237:40:4"
            },
            "src": "2196:82:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key personal-portion retrieval request is received.",
            "id": 944,
            "name": "DocumentKeyPersonalRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 943,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 940,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "2401:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 939,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2401:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 942,
                  "indexed": false,
                  "name": "requesterPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "2422:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 941,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2422:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2400:44:4"
            },
            "src": "2357:88:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key common portion is retrieved. Ater this event s fired, wait for\n exactly `threshold+1` `DocumentKeyPersonalRetrieved` events with the same `decryptedSecret` value.",
            "id": 954,
            "name": "DocumentKeyCommonRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 946,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2679:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2679:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2708:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 950,
                  "indexed": false,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2735:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2735:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "indexed": false,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2754:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2754:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2678:92:4"
            },
            "src": "2646:125:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key personal portion is retrieved. After enough events are fired, use `secretstore_shadowDecrypt`\n to decrypt document contents.",
            "id": 964,
            "name": "DocumentKeyPersonalRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 956,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "2969:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 955,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2969:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 958,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "2998:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2998:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 960,
                  "indexed": false,
                  "name": "decryptedSecret",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "3025:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 959,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3025:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 962,
                  "indexed": false,
                  "name": "shadow",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "3048:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 961,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3048:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2968:93:4"
            },
            "src": "2934:128:4"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during document key retrieval.",
            "id": 970,
            "name": "DocumentKeyShadowRetrievalError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 966,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "3162:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3162:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 968,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "3191:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3191:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3161:56:4"
            },
            "src": "3124:94:4"
          },
          {
            "body": {
              "id": 986,
              "nodeType": "Block",
              "src": "3345:110:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 978,
                      "name": "documentKeyShadowRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1675,
                      "src": "3355:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "323030",
                      "id": 979,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3387:10:4",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_200000000000000000_by_1",
                        "typeString": "int_const 200000000000000000"
                      },
                      "value": "200"
                    },
                    "src": "3355:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 981,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:42:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 982,
                      "name": "maxDocumentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "3407:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "34",
                      "id": 983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3447:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "3407:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 985,
                  "nodeType": "ExpressionStatement",
                  "src": "3407:41:4"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 987,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 975,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 972,
                    "src": "3313:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 976,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 974,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "3290:22:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3290:47:4"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 972,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "3257:31:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3256:33:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3345:0:4"
            },
            "scope": 1685,
            "src": "3245:210:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 994,
              "nodeType": "Block",
              "src": "3564:61:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f7274656421",
                        "id": 991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3581:36:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f3e5bbe97a371dc0a5e7adfc405020739aa2bee075619a52cadf20d7b4f7d49",
                          "typeString": "literal_string \"Direct payments are not supported!\""
                        },
                        "value": "Direct payments are not supported!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4f3e5bbe97a371dc0a5e7adfc405020739aa2bee075619a52cadf20d7b4f7d49",
                          "typeString": "literal_string \"Direct payments are not supported!\""
                        }
                      ],
                      "id": 990,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "3574:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3574:44:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 993,
                  "nodeType": "ExpressionStatement",
                  "src": "3574:44:4"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 995,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 988,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3546:2:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 989,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3564:0:4"
            },
            "scope": 1685,
            "src": "3538:87:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1072,
              "nodeType": "Block",
              "src": "3900:1827:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1012,
                            "name": "documentKeyShadowRetrievalRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1684,
                            "src": "3962:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 1013,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3962:45:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1014,
                          "name": "maxDocumentKeyShadowRetrievalRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1677,
                          "src": "4010:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3962:85:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6178696d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 1016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4049:37:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        },
                        "value": "Maximum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        }
                      ],
                      "id": 1011,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3954:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3954:133:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1018,
                  "nodeType": "ExpressionStatement",
                  "src": "3954:133:4"
                },
                {
                  "assignments": [
                    1020
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1020,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1073,
                      "src": "4098:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1019,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4098:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1029,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1024,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 997,
                            "src": "4147:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1025,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4838,
                              "src": "4160:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4160:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1022,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "4130:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4130:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4130:41:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1021,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "4120:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:52:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4098:74:4"
                },
                {
                  "assignments": [
                    1031
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1031,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1073,
                      "src": "4182:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1030,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "4182:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1035,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1032,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "4234:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1034,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1033,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1020,
                      "src": "4269:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4234:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4182:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1037,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "4299:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            },
                            "id": 1038,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "requesterPublic",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 885,
                            "src": "4299:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "id": 1039,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4299:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4333:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4299:35:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7265717565737465725075626c6963206c656e677468206973206e6f7420302e",
                        "id": 1042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4336:34:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5fd84cfb685ef63c6f8278775d358c7619cf673e06dd5c731e9f66a7a59cd17",
                          "typeString": "literal_string \"requesterPublic length is not 0.\""
                        },
                        "value": "requesterPublic length is not 0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b5fd84cfb685ef63c6f8278775d358c7619cf673e06dd5c731e9f66a7a59cd17",
                          "typeString": "literal_string \"requesterPublic length is not 0.\""
                        }
                      ],
                      "id": 1036,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4291:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4291:80:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1044,
                  "nodeType": "ExpressionStatement",
                  "src": "4291:80:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1045,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "4381:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4381:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "4381:9:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1031,
                        "src": "5494:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1050,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "serverKeyId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 883,
                      "src": "5494:19:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1051,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 997,
                      "src": "5516:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5494:33:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1053,
                  "nodeType": "ExpressionStatement",
                  "src": "5494:33:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1054,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1031,
                        "src": "5537:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1056,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "requesterPublic",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 885,
                      "src": "5537:23:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1057,
                      "name": "requesterPublic",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "5563:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "5537:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1059,
                  "nodeType": "ExpressionStatement",
                  "src": "5537:41:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1063,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "5632:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1060,
                        "name": "documentKeyShadowRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1684,
                        "src": "5588:38:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5588:43:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 1064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5588:56:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1065,
                  "nodeType": "ExpressionStatement",
                  "src": "5588:56:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1067,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 997,
                        "src": "5696:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1068,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "5709:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5709:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1066,
                      "name": "DocumentKeyCommonRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        938
                      ],
                      "referencedDeclaration": 938,
                      "src": "5660:35:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5660:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1071,
                  "nodeType": "EmitStatement",
                  "src": "5655:65:4"
                }
              ]
            },
            "documentation": "Request document key retrieval.",
            "id": 1073,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1002,
                    "name": "documentKeyShadowRetrievalFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1675,
                    "src": "3787:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 1003,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1001,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "3775:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3775:42:4"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1005,
                    "name": "requesterPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 999,
                    "src": "3838:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1004,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "3826:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3826:28:4"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1008,
                    "name": "requesterPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 999,
                    "src": "3879:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1009,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1007,
                  "name": "onlyPublicOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 932,
                  "src": "3863:15:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3863:32:4"
              }
            ],
            "name": "retrieveDocumentKeyShadow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 997,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3706:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 996,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3706:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 999,
                  "name": "requesterPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3727:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 998,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3705:44:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 1010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3900:0:4"
            },
            "scope": 1685,
            "src": "3671:2056:4",
            "stateMutability": "payable",
            "superFunction": 799,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1193,
              "nodeType": "Block",
              "src": "5975:1710:4",
              "statements": [
                {
                  "assignments": [
                    1088
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1088,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6026:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1087,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6026:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1096,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1092,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "6075:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1093,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "6088:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1090,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "6058:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6058:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6058:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1089,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "6048:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6048:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6026:73:4"
                },
                {
                  "assignments": [
                    1098
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1098,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6109:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1097,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "6109:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1102,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1099,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "6161:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1101,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1100,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1088,
                      "src": "6196:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6161:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6109:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1103,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "6222:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1104,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "6222:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1109,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1105,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1098,
                            "src": "6260:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                            }
                          },
                          "id": 1106,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "requesterPublic",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 885,
                          "src": "6260:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 1107,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6260:30:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6294:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6260:35:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6222:73:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1113,
                  "nodeType": "IfStatement",
                  "src": "6218:110:4",
                  "trueBody": {
                    "id": 1112,
                    "nodeType": "Block",
                    "src": "6297:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1111,
                        "nodeType": "Return",
                        "src": "6311:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1115
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1115,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6365:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1114,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6365:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1120,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "6405:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6405:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1116,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "6388:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6388:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6365:51:4"
                },
                {
                  "assignments": [
                    1122
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1122,
                      "name": "commonResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6426:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1121,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6426:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1130,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1126,
                            "name": "commonPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1079,
                            "src": "6478:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1127,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1081,
                            "src": "6491:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1124,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "6461:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6461:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6461:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1123,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "6451:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6451:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6426:76:4"
                },
                {
                  "assignments": [
                    1132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1132,
                      "name": "commonResponseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6512:37:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1131,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "6512:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1134,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1098,
                          "src": "6580:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonRetrievalResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 887,
                        "src": "6580:32:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1136,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1115,
                        "src": "6626:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1137,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "6654:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6654:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6674:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "6654:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1141,
                        "name": "commonResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1122,
                        "src": "6689:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1133,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "6552:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 1142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6552:152:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6512:192:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1144,
                      "name": "commonResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1132,
                      "src": "6771:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1145,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "6796:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6796:27:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "6771:52:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1150,
                  "nodeType": "IfStatement",
                  "src": "6767:112:4",
                  "trueBody": {
                    "id": 1149,
                    "nodeType": "Block",
                    "src": "6825:54:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1148,
                        "nodeType": "Return",
                        "src": "6862:7:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1151,
                      "name": "commonResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1132,
                      "src": "6980:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "7005:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Impossible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7005:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "6980:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1167,
                  "nodeType": "IfStatement",
                  "src": "6976:236:4",
                  "trueBody": {
                    "id": 1166,
                    "nodeType": "Block",
                    "src": "7033:179:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1156,
                              "name": "retrievalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1088,
                              "src": "7086:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1157,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "7099:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            ],
                            "id": 1155,
                            "name": "clearDocumentKeyShadowRetrievalRequest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1673,
                            "src": "7047:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                              "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                            }
                          },
                          "id": 1158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7047:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1159,
                        "nodeType": "ExpressionStatement",
                        "src": "7047:60:4"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1161,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "7158:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1162,
                              "name": "requester",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "7171:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1160,
                            "name": "DocumentKeyShadowRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              970
                            ],
                            "referencedDeclaration": 970,
                            "src": "7126:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7126:55:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1164,
                        "nodeType": "EmitStatement",
                        "src": "7121:60:4"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1165,
                        "nodeType": "Return",
                        "src": "7195:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1168,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "7264:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "7264:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7301:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7264:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1173,
                  "nodeType": "ExpressionStatement",
                  "src": "7264:41:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1174,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "7315:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1176,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "threshold",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 891,
                      "src": "7315:17:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1177,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1081,
                      "src": "7335:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7315:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1179,
                  "nodeType": "ExpressionStatement",
                  "src": "7315:29:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1181,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1075,
                        "src": "7505:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1182,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1077,
                        "src": "7530:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1183,
                        "name": "commonPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1079,
                        "src": "7553:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1184,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1081,
                        "src": "7578:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 1180,
                      "name": "DocumentKeyCommonRetrieved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        954
                      ],
                      "referencedDeclaration": 954,
                      "src": "7465:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,uint8)"
                      }
                    },
                    "id": 1185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7465:123:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1186,
                  "nodeType": "EmitStatement",
                  "src": "7460:128:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1075,
                        "src": "7641:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1189,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1098,
                          "src": "7654:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "7654:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "id": 1187,
                      "name": "DocumentKeyPersonalRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        944
                      ],
                      "referencedDeclaration": 944,
                      "src": "7603:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7603:75:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1192,
                  "nodeType": "EmitStatement",
                  "src": "7598:80:4"
                }
              ]
            },
            "documentation": "Called when common data is reported by key server.",
            "id": 1194,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1084,
                    "name": "commonPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1079,
                    "src": "5958:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1085,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1083,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "5946:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5946:24:4"
              }
            ],
            "name": "documentKeyCommonRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1075,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5837:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1074,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5837:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1077,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5866:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1076,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5866:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1079,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5893:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1078,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5893:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1081,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5920:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5920:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5827:109:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5975:0:4"
            },
            "scope": 1685,
            "src": "5792:1893:4",
            "stateMutability": "nonpayable",
            "superFunction": 823,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "7982:1976:4",
              "statements": [
                {
                  "assignments": [
                    1211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1211,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8033:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1210,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8033:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1219,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1215,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1196,
                            "src": "8082:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1216,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1198,
                            "src": "8095:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1213,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8065:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8065:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8065:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1212,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8055:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8055:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8033:73:4"
                },
                {
                  "assignments": [
                    1221
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1221,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8116:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1220,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "8116:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1225,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1222,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "8168:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1224,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1223,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1211,
                      "src": "8203:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8168:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8116:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1226,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1221,
                          "src": "8229:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1227,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "8229:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      "id": 1228,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8229:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8263:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8229:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1233,
                  "nodeType": "IfStatement",
                  "src": "8225:72:4",
                  "trueBody": {
                    "id": 1232,
                    "nodeType": "Block",
                    "src": "8266:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1209,
                        "id": 1231,
                        "nodeType": "Return",
                        "src": "8280:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1235,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1221,
                          "src": "8383:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1236,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isCommonRetrievalCompleted",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 889,
                        "src": "8383:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c657465642e",
                        "id": 1237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8419:36:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3d3a2c651fe239a0b315002149a5f5df48f1349b3c6d4ac829c6fb6d754e941c",
                          "typeString": "literal_string \"Common retrieval is not completed.\""
                        },
                        "value": "Common retrieval is not completed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3d3a2c651fe239a0b315002149a5f5df48f1349b3c6d4ac829c6fb6d754e941c",
                          "typeString": "literal_string \"Common retrieval is not completed.\""
                        }
                      ],
                      "id": 1234,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8375:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8375:81:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1239,
                  "nodeType": "ExpressionStatement",
                  "src": "8375:81:4"
                },
                {
                  "assignments": [
                    1241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1241,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8669:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1240,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8669:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1246,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1243,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "8709:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8709:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1242,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "8692:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8692:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8669:51:4"
                },
                {
                  "assignments": [
                    1248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1248,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8730:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8730:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1255,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8763:1:4",
                              "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": 1249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8755:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8755:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1252,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1241,
                          "src": "8769:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "8755:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 1254,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8754:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8730:54:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1257,
                                "name": "participants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1200,
                                "src": "8803:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1258,
                                "name": "keyServerMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1248,
                                "src": "8818:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8803:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1260,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8802:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8836:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8802:35:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4b65792073657276657220646f6573206e6f74206861766520616e20656e74727920696e207061727469636970616e74732e",
                        "id": 1263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8839:52:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9ab9f2c3480daa905ff83fdb992c1579e3e974c79400ccb8db8e6c5c940847fa",
                          "typeString": "literal_string \"Key server does not have an entry in participants.\""
                        },
                        "value": "Key server does not have an entry in participants."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9ab9f2c3480daa905ff83fdb992c1579e3e974c79400ccb8db8e6c5c940847fa",
                          "typeString": "literal_string \"Key server does not have an entry in participants.\""
                        }
                      ],
                      "id": 1256,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8794:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8794:98:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1265,
                  "nodeType": "ExpressionStatement",
                  "src": "8794:98:4"
                },
                {
                  "assignments": [
                    1267
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1267,
                      "name": "personalDataId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8939:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1266,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8939:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1275,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1271,
                            "name": "participants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "8991:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1272,
                            "name": "decryptedSecret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1202,
                            "src": "9005:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8974:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8974:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8974:47:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1268,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8964:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8964:58:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8939:83:4"
                },
                {
                  "assignments": [
                    1277
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1277,
                      "name": "personalData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "9032:51:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1276,
                        "name": "DocumentKeyShadowRetrievalData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 910,
                        "src": "9032:30:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1282,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1278,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9086:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "personalData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 902,
                      "src": "9086:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref)"
                      }
                    },
                    "id": 1281,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1280,
                      "name": "personalDataId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "9107:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9086:36:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9032:90:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1283,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9136:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1284,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "participants",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 905,
                      "src": "9136:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1285,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9165:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9136:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1313,
                    "nodeType": "Block",
                    "src": "9298:112:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1303,
                                        "name": "personalData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1277,
                                        "src": "9321:12:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                                        }
                                      },
                                      "id": 1304,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reported",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 907,
                                      "src": "9321:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1305,
                                      "name": "keyServerMask",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1248,
                                      "src": "9345:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9321:37:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1307,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9320:39:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9363:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9320:44:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506572736f6e616c2064617461206973206e6f74207265706f727465642e",
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9366:32:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b9bd69fd7e82b11f72277d300ff33a11d5fad20c623786b5f71f77d62bde4233",
                                "typeString": "literal_string \"Personal data is not reported.\""
                              },
                              "value": "Personal data is not reported."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b9bd69fd7e82b11f72277d300ff33a11d5fad20c623786b5f71f77d62bde4233",
                                "typeString": "literal_string \"Personal data is not reported.\""
                              }
                            ],
                            "id": 1302,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4841,
                              4842
                            ],
                            "referencedDeclaration": 4842,
                            "src": "9312:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9312:87:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1312,
                        "nodeType": "ExpressionStatement",
                        "src": "9312:87:4"
                      }
                    ]
                  },
                  "id": 1314,
                  "nodeType": "IfStatement",
                  "src": "9132:278:4",
                  "trueBody": {
                    "id": 1301,
                    "nodeType": "Block",
                    "src": "9168:124:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1292,
                              "name": "personalDataId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1267,
                              "src": "9212:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1287,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1221,
                                "src": "9182:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1290,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "personalDataKeys",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 898,
                              "src": "9182:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 1291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9182:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 1293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9182:45:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1294,
                        "nodeType": "ExpressionStatement",
                        "src": "9182:45:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1295,
                              "name": "personalData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1277,
                              "src": "9241:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                              }
                            },
                            "id": 1297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "participants",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 905,
                            "src": "9241:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1298,
                            "name": "participants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "9269:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9241:40:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1300,
                        "nodeType": "ExpressionStatement",
                        "src": "9241:40:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1315,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9447:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1317,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reportedCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 909,
                      "src": "9447:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9477:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9447:31:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1320,
                  "nodeType": "ExpressionStatement",
                  "src": "9447:31:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1321,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9488:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1323,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reported",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "9488:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1324,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1248,
                      "src": "9513:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9488:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1326,
                  "nodeType": "ExpressionStatement",
                  "src": "9488:38:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1328,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1196,
                        "src": "9620:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1329,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1198,
                        "src": "9645:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1330,
                        "name": "decryptedSecret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "9668:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1331,
                        "name": "shadow",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1204,
                        "src": "9697:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1327,
                      "name": "DocumentKeyPersonalRetrieved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        964
                      ],
                      "referencedDeclaration": 964,
                      "src": "9578:28:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,bytes memory)"
                      }
                    },
                    "id": 1332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9578:126:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1333,
                  "nodeType": "EmitStatement",
                  "src": "9573:131:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1334,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9771:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1335,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "threshold",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 891,
                      "src": "9771:17:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 1339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1336,
                          "name": "personalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1277,
                          "src": "9792:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                          }
                        },
                        "id": 1337,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reportedCount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 909,
                        "src": "9792:26:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9821:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "9792:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "9771:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1343,
                  "nodeType": "IfStatement",
                  "src": "9767:88:4",
                  "trueBody": {
                    "id": 1342,
                    "nodeType": "Block",
                    "src": "9824:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1209,
                        "id": 1341,
                        "nodeType": "Return",
                        "src": "9838:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1345,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1211,
                        "src": "9930:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1346,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9943:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1344,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "9891:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9891:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1348,
                  "nodeType": "ExpressionStatement",
                  "src": "9891:60:4"
                }
              ]
            },
            "documentation": "Called when 'personal' data is reported by key server.",
            "id": 1350,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1207,
                    "name": "decryptedSecret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1202,
                    "src": "7961:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1208,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1206,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "7949:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7949:28:4"
              }
            ],
            "name": "documentKeyPersonalRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1196,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7801:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1195,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7801:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1198,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7830:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7830:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1200,
                  "name": "participants",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7857:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1199,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7857:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1202,
                  "name": "decryptedSecret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7887:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7887:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "name": "shadow",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7918:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7918:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7791:140:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7982:0:4"
            },
            "scope": 1685,
            "src": "7754:2204:4",
            "stateMutability": "nonpayable",
            "superFunction": 836,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1482,
              "nodeType": "Block",
              "src": "10125:2781:4",
              "statements": [
                {
                  "assignments": [
                    1358
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1358,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10176:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1357,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10176:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1366,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1362,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "10225:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1363,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1354,
                            "src": "10238:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1360,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "10208:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10208:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10208:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1359,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "10198:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10198:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10176:73:4"
                },
                {
                  "assignments": [
                    1368
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1368,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10259:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1367,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "10259:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1372,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1369,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "10311:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1371,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1370,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1358,
                      "src": "10346:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10311:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10259:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1373,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1368,
                          "src": "10372:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "10372:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      "id": 1375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10372:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10406:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10372:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1380,
                  "nodeType": "IfStatement",
                  "src": "10368:72:4",
                  "trueBody": {
                    "id": 1379,
                    "nodeType": "Block",
                    "src": "10409:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1378,
                        "nodeType": "Return",
                        "src": "10423:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1382
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1382,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10551:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1381,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "10551:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1387,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1384,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "10591:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10591:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1383,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "10574:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10574:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10551:51:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10616:35:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1388,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "10617:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "10617:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1429,
                  "nodeType": "IfStatement",
                  "src": "10612:831:4",
                  "trueBody": {
                    "id": 1428,
                    "nodeType": "Block",
                    "src": "10653:790:4",
                    "statements": [
                      {
                        "assignments": [
                          1392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1392,
                            "name": "invalidResponse",
                            "nodeType": "VariableDeclaration",
                            "scope": 1483,
                            "src": "10698:23:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1391,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10698:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1396,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646",
                              "id": 1394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10732:66:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              },
                              "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              }
                            ],
                            "id": 1393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10724:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 1395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10724:75:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10698:101:4"
                      },
                      {
                        "assignments": [
                          1398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1398,
                            "name": "invalidResponseSupport",
                            "nodeType": "VariableDeclaration",
                            "scope": 1483,
                            "src": "10813:38:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1397,
                              "name": "ResponseSupport",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2994,
                              "src": "10813:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1409,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1400,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1368,
                                "src": "10886:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1401,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "commonRetrievalResponses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 887,
                              "src": "10886:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1402,
                              "name": "keyServerIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1382,
                              "src": "10936:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 1406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1403,
                                  "name": "keyServersCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3060,
                                  "src": "10968:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                    "typeString": "function () view returns (uint8)"
                                  }
                                },
                                "id": 1404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10968:17:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10988:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "10968:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1407,
                              "name": "invalidResponse",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1392,
                              "src": "11007:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1399,
                            "name": "insertResponse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3378,
                            "src": "10854:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10854:169:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10813:210:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          },
                          "id": 1413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1410,
                            "name": "invalidResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1398,
                            "src": "11125:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1411,
                              "name": "ResponseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "11151:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                              }
                            },
                            "id": 1412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Unconfirmed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11151:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            }
                          },
                          "src": "11125:53:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1416,
                        "nodeType": "IfStatement",
                        "src": "11121:98:4",
                        "trueBody": {
                          "id": 1415,
                          "nodeType": "Block",
                          "src": "11180:39:4",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 1356,
                              "id": 1414,
                              "nodeType": "Return",
                              "src": "11198:7:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1418,
                              "name": "retrievalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1358,
                              "src": "11317:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1419,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1368,
                              "src": "11330:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            ],
                            "id": 1417,
                            "name": "clearDocumentKeyShadowRetrievalRequest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1673,
                            "src": "11278:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                              "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                            }
                          },
                          "id": 1420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11278:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1421,
                        "nodeType": "ExpressionStatement",
                        "src": "11278:60:4"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1423,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1352,
                              "src": "11389:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1424,
                              "name": "requester",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1354,
                              "src": "11402:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1422,
                            "name": "DocumentKeyShadowRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              970
                            ],
                            "referencedDeclaration": 970,
                            "src": "11357:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11357:55:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1426,
                        "nodeType": "EmitStatement",
                        "src": "11352:60:4"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1427,
                        "nodeType": "Return",
                        "src": "11426:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1431
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1431,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "12303:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12303:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1437,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12335:1:4",
                          "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": 1432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12327:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12327:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1435,
                      "name": "keyServerIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1382,
                      "src": "12341:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12327:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12303:52:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1438,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1368,
                              "src": "12370:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            },
                            "id": 1439,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "personalRetrievalErrors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 893,
                            "src": "12370:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1440,
                            "name": "keyServerMask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "12404:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12370:47:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1442,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12369:49:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1443,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12422:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12369:54:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1447,
                  "nodeType": "IfStatement",
                  "src": "12365:91:4",
                  "trueBody": {
                    "id": 1446,
                    "nodeType": "Block",
                    "src": "12425:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1445,
                        "nodeType": "Return",
                        "src": "12439:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1448,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12465:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1450,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "personalRetrievalErrors",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 893,
                      "src": "12465:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1451,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1431,
                      "src": "12500:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12465:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1453,
                  "nodeType": "ExpressionStatement",
                  "src": "12465:48:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1454,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12523:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1456,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "personalRetrievalErrorsCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 895,
                      "src": "12523:36:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12563:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "12523:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1459,
                  "nodeType": "ExpressionStatement",
                  "src": "12523:41:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1460,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12621:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1461,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "personalRetrievalErrorsCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 895,
                      "src": "12621:36:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 1467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1462,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "12660:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12660:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12680:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12660:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12684:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "12660:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12621:64:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1471,
                  "nodeType": "IfStatement",
                  "src": "12617:101:4",
                  "trueBody": {
                    "id": 1470,
                    "nodeType": "Block",
                    "src": "12687:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1469,
                        "nodeType": "Return",
                        "src": "12701:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1473,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1358,
                        "src": "12808:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1474,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12821:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1472,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "12769:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12769:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1476,
                  "nodeType": "ExpressionStatement",
                  "src": "12769:60:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1478,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1352,
                        "src": "12876:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1479,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "12889:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1477,
                      "name": "DocumentKeyShadowRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        970
                      ],
                      "referencedDeclaration": 970,
                      "src": "12844:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12844:55:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1481,
                  "nodeType": "EmitStatement",
                  "src": "12839:60:4"
                }
              ]
            },
            "documentation": "Called when error occurs during document key shadow retrieval.",
            "id": 1483,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyShadowRetrievalError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1483,
                  "src": "10076:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10076:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1354,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1483,
                  "src": "10097:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1353,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10097:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10075:40:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1356,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10125:0:4"
            },
            "scope": 1685,
            "src": "10035:2871:4",
            "stateMutability": "nonpayable",
            "superFunction": 843,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1491,
              "nodeType": "Block",
              "src": "13064:69:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1488,
                      "name": "documentKeyShadowRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1684,
                      "src": "13081:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1489,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13081:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1487,
                  "id": 1490,
                  "nodeType": "Return",
                  "src": "13074:52:4"
                }
              ]
            },
            "documentation": "Get count of pending document key shadow retrieval requests.",
            "id": 1492,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "documentKeyShadowRetrievalRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13029:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1486,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1492,
                  "src": "13055:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13055:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13054:9:4"
            },
            "scope": 1685,
            "src": "12981:152:4",
            "stateMutability": "view",
            "superFunction": 848,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1523,
              "nodeType": "Block",
              "src": "13389:338:4",
              "statements": [
                {
                  "assignments": [
                    1504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1504,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "13399:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1503,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13399:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1508,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1505,
                      "name": "documentKeyShadowRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1684,
                      "src": "13421:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1507,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1506,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1494,
                      "src": "13460:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13421:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13399:67:4"
                },
                {
                  "assignments": [
                    1510
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1510,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "13476:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1509,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "13476:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1514,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1511,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "13528:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1513,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1512,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1504,
                      "src": "13563:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13528:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13476:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1515,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13606:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1516,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "serverKeyId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 883,
                        "src": "13606:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1517,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13639:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1518,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "13639:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1519,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13676:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1520,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isCommonRetrievalCompleted",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 889,
                        "src": "13676:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1521,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13592:128:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_storage_$_t_bool_$",
                      "typeString": "tuple(bytes32,bytes storage ref,bool)"
                    }
                  },
                  "functionReturnParameters": 1502,
                  "id": 1522,
                  "nodeType": "Return",
                  "src": "13585:135:4"
                }
              ]
            },
            "documentation": "Get document key shadow retrieval request with given index.\n Returns: (serverKeyId, requesterPublic, isCommonRetrievalCompleted)",
            "id": 1524,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1494,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13329:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13329:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13328:15:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1497,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13367:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1496,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13367:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1499,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13376:5:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1498,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13376:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1501,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13383:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1500,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13383:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13366:22:4"
            },
            "scope": 1685,
            "src": "13283:444:4",
            "stateMutability": "view",
            "superFunction": 859,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1566,
              "nodeType": "Block",
              "src": "13969:470:4",
              "statements": [
                {
                  "assignments": [
                    1536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "13979:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1535,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13979:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1540,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1538,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1530,
                        "src": "14019:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1537,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "14002:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14002:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13979:50:4"
                },
                {
                  "assignments": [
                    1542
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1542,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "14039:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1541,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14039:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1550,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1546,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "14088:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1547,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1528,
                            "src": "14101:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1544,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "14071:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14071:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14071:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1543,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "14061:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14061:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14039:73:4"
                },
                {
                  "assignments": [
                    1552
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1552,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "14122:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1551,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "14122:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1556,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1553,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "14174:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1554,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1542,
                      "src": "14209:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14174:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14122:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1557,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1552,
                        "src": "14314:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1558,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "14314:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1560,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1552,
                            "src": "14383:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                            }
                          },
                          "id": 1561,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commonRetrievalResponses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 887,
                          "src": "14383:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "14417:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 1559,
                        "name": "isResponseRequired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "14364:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$returns$_t_bool_$",
                          "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8) view returns (bool)"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14364:68:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "14314:118:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1534,
                  "id": 1565,
                  "nodeType": "Return",
                  "src": "14307:125:4"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 1567,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isDocumentKeyShadowRetrievalResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1526,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13853:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1525,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13853:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1528,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13874:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13874:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1530,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13893:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13893:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13852:59:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13959:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1532,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13959:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13958:6:4"
            },
            "scope": 1685,
            "src": "13799:640:4",
            "stateMutability": "view",
            "superFunction": 870,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1578,
              "nodeType": "Block",
              "src": "14626:55:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1574,
                      "name": "documentKeyShadowRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1675,
                      "src": "14636:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1575,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1569,
                      "src": "14668:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14636:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1577,
                  "nodeType": "ExpressionStatement",
                  "src": "14636:38:4"
                }
              ]
            },
            "documentation": "Set document key shadow retrieval fee.",
            "id": 1579,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1571,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "14612:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14612:9:4"
              }
            ],
            "name": "setDocumentKeyShadowRetrievalFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1569,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 1579,
                  "src": "14573:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1568,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14573:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14572:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14626:0:4"
            },
            "scope": 1685,
            "src": "14531:150:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1590,
              "nodeType": "Block",
              "src": "14850:65:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1586,
                      "name": "maxDocumentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "14860:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1587,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1581,
                      "src": "14900:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14860:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1589,
                  "nodeType": "ExpressionStatement",
                  "src": "14860:48:4"
                }
              ]
            },
            "documentation": "Set document key shadow retrieval requests limit.",
            "id": 1591,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1584,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1583,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "14836:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14836:9:4"
              }
            ],
            "name": "setMaxDocumentKeyShadowRetrievalRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1582,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1581,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1591,
                  "src": "14795:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1580,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14795:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14794:18:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1585,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14850:0:4"
            },
            "scope": 1685,
            "src": "14745:170:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1626,
              "nodeType": "Block",
              "src": "15101:340:4",
              "statements": [
                {
                  "assignments": [
                    1601
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1601,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1627,
                      "src": "15111:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1600,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15111:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1605,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1593,
                            "src": "15160:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1606,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1595,
                            "src": "15173:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1603,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "15143:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15143:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15143:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1602,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "15133:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15133:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15111:73:4"
                },
                {
                  "assignments": [
                    1611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1611,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1627,
                      "src": "15194:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1610,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "15194:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1615,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1612,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "15246:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1614,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1613,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1601,
                      "src": "15281:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15246:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15194:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1617,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1601,
                        "src": "15342:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1618,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1611,
                        "src": "15355:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1616,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "15303:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15303:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1620,
                  "nodeType": "ExpressionStatement",
                  "src": "15303:60:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1622,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1593,
                        "src": "15411:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1623,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1595,
                        "src": "15424:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1621,
                      "name": "DocumentKeyShadowRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        970
                      ],
                      "referencedDeclaration": 970,
                      "src": "15379:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15379:55:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1625,
                  "nodeType": "EmitStatement",
                  "src": "15374:60:4"
                }
              ]
            },
            "documentation": "Delete document key shadow retrieval request.",
            "id": 1627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1598,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1597,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "15087:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15087:9:4"
              }
            ],
            "name": "deleteDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1593,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1627,
                  "src": "15024:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1592,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15024:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1595,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1627,
                  "src": "15045:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15045:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15023:40:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1599,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15101:0:4"
            },
            "scope": 1685,
            "src": "14975:466:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1672,
              "nodeType": "Block",
              "src": "15668:358:4",
              "statements": [
                {
                  "body": {
                    "id": 1655,
                    "nodeType": "Block",
                    "src": "15737:81:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "15751:56:4",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1646,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1631,
                                "src": "15758:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "personalData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 902,
                              "src": "15758:20:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref)"
                              }
                            },
                            "id": 1652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1648,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1631,
                                  "src": "15779:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                    "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                  }
                                },
                                "id": 1649,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "personalDataKeys",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 898,
                                "src": "15779:24:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 1651,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1650,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1635,
                                "src": "15804:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15779:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15758:49:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1654,
                        "nodeType": "ExpressionStatement",
                        "src": "15751:56:4"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1638,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1635,
                      "src": "15695:1:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1639,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1631,
                          "src": "15699:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1640,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "personalDataKeys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 898,
                        "src": "15699:24:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1641,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15699:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15695:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1656,
                  "initializationExpression": {
                    "assignments": [
                      1635
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1635,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1673,
                        "src": "15683:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1634,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15683:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1637,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15692:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15683:10:4"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "15732:3:4",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1643,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1635,
                        "src": "15734:1:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1645,
                    "nodeType": "ExpressionStatement",
                    "src": "15732:3:4"
                  },
                  "nodeType": "ForStatement",
                  "src": "15678:140:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1658,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1631,
                          "src": "15842:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1659,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonRetrievalResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 887,
                        "src": "15842:32:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      ],
                      "id": 1657,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "15827:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 1660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15827:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1661,
                  "nodeType": "ExpressionStatement",
                  "src": "15827:48:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "15885:54:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1662,
                        "name": "documentKeyShadowRetrievalRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1681,
                        "src": "15892:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                        }
                      },
                      "id": 1664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1663,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1629,
                        "src": "15927:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15892:47:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1666,
                  "nodeType": "ExpressionStatement",
                  "src": "15885:54:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1668,
                        "name": "documentKeyShadowRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1684,
                        "src": "15967:38:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1669,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1629,
                        "src": "16007:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1667,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "15950:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 1670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15950:69:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1671,
                  "nodeType": "ExpressionStatement",
                  "src": "15950:69:4"
                }
              ]
            },
            "documentation": "Clear document key shadow retrieval request traces.",
            "id": 1673,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1629,
                  "name": "retrievalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1673,
                  "src": "15588:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1628,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15588:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1631,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 1673,
                  "src": "15609:49:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                    "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1630,
                    "name": "DocumentKeyShadowRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 903,
                    "src": "15609:33:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15587:72:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1633,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15668:0:4"
            },
            "scope": 1685,
            "src": "15540:486:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1675,
            "name": "documentKeyShadowRetrievalFee",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16075:44:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1674,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "16075:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1677,
            "name": "maxDocumentKeyShadowRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16280:52:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1676,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "16280:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1681,
            "name": "documentKeyShadowRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16371:97:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest)"
            },
            "typeName": {
              "id": 1680,
              "keyType": {
                "id": 1678,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "16380:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "16371:54:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1679,
                "name": "DocumentKeyShadowRetrievalRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 903,
                "src": "16391:33:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1684,
            "name": "documentKeyShadowRetrievalRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16511:56:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1682,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "16511:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1683,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "16511:9:4",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 1686,
        "src": "906:15664:4"
      }
    ],
    "src": "709:15862:4"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyShadowRetrievalService.sol",
    "exportedSymbols": {
      "SecretStoreDocumentKeyShadowRetrievalService": [
        1685
      ]
    },
    "id": 1686,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 873,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "709:24:4"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 874,
        "nodeType": "ImportDirective",
        "scope": 1686,
        "sourceUnit": 872,
        "src": "735:46:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 875,
        "nodeType": "ImportDirective",
        "scope": 1686,
        "sourceUnit": 3513,
        "src": "782:38:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 876,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "963:22:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 877,
            "nodeType": "InheritanceSpecifier",
            "src": "963:22:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 878,
              "name": "DocumentKeyShadowRetrievalServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 800,
              "src": "987:42:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyShadowRetrievalServiceClientApi_$800",
                "typeString": "contract DocumentKeyShadowRetrievalServiceClientApi"
              }
            },
            "id": 879,
            "nodeType": "InheritanceSpecifier",
            "src": "987:42:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 880,
              "name": "DocumentKeyShadowRetrievalServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 871,
              "src": "1031:45:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyShadowRetrievalServiceKeyServerApi_$871",
                "typeString": "contract DocumentKeyShadowRetrievalServiceKeyServerApi"
              }
            },
            "id": 881,
            "nodeType": "InheritanceSpecifier",
            "src": "1031:45:4"
          }
        ],
        "contractDependencies": [
          800,
          871,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Document Key shadow retrieval service contract.",
        "fullyImplemented": true,
        "id": 1685,
        "linearizedBaseContracts": [
          1685,
          871,
          800,
          3512,
          4823
        ],
        "name": "SecretStoreDocumentKeyShadowRetrievalService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest",
            "id": 903,
            "members": [
              {
                "constant": false,
                "id": 883,
                "name": "serverKeyId",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1220:19:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 882,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1220:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 885,
                "name": "requesterPublic",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1249:21:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 884,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1249:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 887,
                "name": "commonRetrievalResponses",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1280:41:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 886,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1280:16:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 889,
                "name": "isCommonRetrievalCompleted",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1331:31:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 888,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1331:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 891,
                "name": "threshold",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1372:15:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 890,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1372:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 893,
                "name": "personalRetrievalErrors",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1438:31:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 892,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1438:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 895,
                "name": "personalRetrievalErrorsCount",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1479:34:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 894,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1479:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 898,
                "name": "personalDataKeys",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1523:26:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 896,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 897,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1523:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 902,
                "name": "personalData",
                "nodeType": "VariableDeclaration",
                "scope": 903,
                "src": "1559:64:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                  "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData)"
                },
                "typeName": {
                  "id": 901,
                  "keyType": {
                    "id": 899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1568:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1559:51:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                    "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 900,
                    "name": "DocumentKeyShadowRetrievalData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 910,
                    "src": "1579:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyShadowRetrievalRequest",
            "nodeType": "StructDefinition",
            "scope": 1685,
            "src": "1130:500:4",
            "visibility": "public"
          },
          {
            "canonicalName": "SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData",
            "id": 910,
            "members": [
              {
                "constant": false,
                "id": 905,
                "name": "participants",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1721:20:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 904,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1721:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 907,
                "name": "reported",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1751:16:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 906,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1751:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 909,
                "name": "reportedCount",
                "nodeType": "VariableDeclaration",
                "scope": 910,
                "src": "1777:19:4",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 908,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1777:5:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyShadowRetrievalData",
            "nodeType": "StructDefinition",
            "scope": 1685,
            "src": "1673:130:4",
            "visibility": "public"
          },
          {
            "body": {
              "id": 931,
              "nodeType": "Block",
              "src": "1916:202:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 918,
                                        "name": "publicKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 912,
                                        "src": "1957:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 917,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4832,
                                      "src": "1947:9:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                        "typeString": "function () pure returns (bytes32)"
                                      }
                                    },
                                    "id": 919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1947:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1942:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1942:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3078303046464646464646464646464646464646464646464646464646464646464646464646464646464646",
                                "id": 921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1971:44:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                                  "typeString": "int_const 1461...(41 digits omitted)...2975"
                                },
                                "value": "0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                              },
                              "src": "1942:73:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1934:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1934:82:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 924,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4838,
                            "src": "2020:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2020:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1934:96:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e207075626c6963206b65792e",
                        "id": 927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2044:46:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c4c08dbf1eae093b7c103c8c106e333c95308b12597b5337d785f19995e420d",
                          "typeString": "literal_string \"Caller is not owner of the given public key.\""
                        },
                        "value": "Caller is not owner of the given public key."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c4c08dbf1eae093b7c103c8c106e333c95308b12597b5337d785f19995e420d",
                          "typeString": "literal_string \"Caller is not owner of the given public key.\""
                        }
                      ],
                      "id": 914,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "1926:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1926:174:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 929,
                  "nodeType": "ExpressionStatement",
                  "src": "1926:174:4"
                },
                {
                  "id": 930,
                  "nodeType": "PlaceholderStatement",
                  "src": "2110:1:4"
                }
              ]
            },
            "documentation": "/ Only pass when caller is the owner of given public key.",
            "id": 932,
            "name": "onlyPublicOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 913,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 912,
                  "name": "publicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 932,
                  "src": "1899:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 911,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:17:4"
            },
            "src": "1874:244:4",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "When document key common-portion retrieval request is received.",
            "id": 938,
            "name": "DocumentKeyCommonRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 934,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "2238:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 933,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 936,
                  "indexed": false,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "2259:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2259:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2237:40:4"
            },
            "src": "2196:82:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key personal-portion retrieval request is received.",
            "id": 944,
            "name": "DocumentKeyPersonalRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 943,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 940,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "2401:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 939,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2401:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 942,
                  "indexed": false,
                  "name": "requesterPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "2422:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 941,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2422:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2400:44:4"
            },
            "src": "2357:88:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key common portion is retrieved. Ater this event s fired, wait for\n exactly `threshold+1` `DocumentKeyPersonalRetrieved` events with the same `decryptedSecret` value.",
            "id": 954,
            "name": "DocumentKeyCommonRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 946,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2679:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2679:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2708:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 950,
                  "indexed": false,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2735:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2735:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "indexed": false,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 954,
                  "src": "2754:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2754:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2678:92:4"
            },
            "src": "2646:125:4"
          },
          {
            "anonymous": false,
            "documentation": "When document key personal portion is retrieved. After enough events are fired, use `secretstore_shadowDecrypt`\n to decrypt document contents.",
            "id": 964,
            "name": "DocumentKeyPersonalRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 956,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "2969:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 955,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2969:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 958,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "2998:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2998:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 960,
                  "indexed": false,
                  "name": "decryptedSecret",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "3025:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 959,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3025:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 962,
                  "indexed": false,
                  "name": "shadow",
                  "nodeType": "VariableDeclaration",
                  "scope": 964,
                  "src": "3048:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 961,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3048:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2968:93:4"
            },
            "src": "2934:128:4"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during document key retrieval.",
            "id": 970,
            "name": "DocumentKeyShadowRetrievalError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 966,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "3162:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3162:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 968,
                  "indexed": true,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "3191:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3191:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3161:56:4"
            },
            "src": "3124:94:4"
          },
          {
            "body": {
              "id": 986,
              "nodeType": "Block",
              "src": "3345:110:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 978,
                      "name": "documentKeyShadowRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1675,
                      "src": "3355:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "323030",
                      "id": 979,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3387:10:4",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_200000000000000000_by_1",
                        "typeString": "int_const 200000000000000000"
                      },
                      "value": "200"
                    },
                    "src": "3355:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 981,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:42:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 982,
                      "name": "maxDocumentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "3407:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "34",
                      "id": 983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3447:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "3407:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 985,
                  "nodeType": "ExpressionStatement",
                  "src": "3407:41:4"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 987,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 975,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 972,
                    "src": "3313:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 976,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 974,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "3290:22:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3290:47:4"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 972,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "3257:31:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3256:33:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3345:0:4"
            },
            "scope": 1685,
            "src": "3245:210:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 994,
              "nodeType": "Block",
              "src": "3564:61:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f7274656421",
                        "id": 991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3581:36:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f3e5bbe97a371dc0a5e7adfc405020739aa2bee075619a52cadf20d7b4f7d49",
                          "typeString": "literal_string \"Direct payments are not supported!\""
                        },
                        "value": "Direct payments are not supported!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4f3e5bbe97a371dc0a5e7adfc405020739aa2bee075619a52cadf20d7b4f7d49",
                          "typeString": "literal_string \"Direct payments are not supported!\""
                        }
                      ],
                      "id": 990,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "3574:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3574:44:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 993,
                  "nodeType": "ExpressionStatement",
                  "src": "3574:44:4"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 995,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 988,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3546:2:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 989,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3564:0:4"
            },
            "scope": 1685,
            "src": "3538:87:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1072,
              "nodeType": "Block",
              "src": "3900:1827:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1012,
                            "name": "documentKeyShadowRetrievalRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1684,
                            "src": "3962:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 1013,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3962:45:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1014,
                          "name": "maxDocumentKeyShadowRetrievalRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1677,
                          "src": "4010:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3962:85:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6178696d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 1016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4049:37:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        },
                        "value": "Maximum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        }
                      ],
                      "id": 1011,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3954:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3954:133:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1018,
                  "nodeType": "ExpressionStatement",
                  "src": "3954:133:4"
                },
                {
                  "assignments": [
                    1020
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1020,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1073,
                      "src": "4098:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1019,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4098:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1029,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1024,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 997,
                            "src": "4147:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1025,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4838,
                              "src": "4160:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4160:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1022,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "4130:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4130:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4130:41:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1021,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "4120:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:52:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4098:74:4"
                },
                {
                  "assignments": [
                    1031
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1031,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1073,
                      "src": "4182:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1030,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "4182:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1035,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1032,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "4234:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1034,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1033,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1020,
                      "src": "4269:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4234:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4182:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1037,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "4299:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            },
                            "id": 1038,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "requesterPublic",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 885,
                            "src": "4299:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "id": 1039,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4299:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4333:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4299:35:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7265717565737465725075626c6963206c656e677468206973206e6f7420302e",
                        "id": 1042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4336:34:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5fd84cfb685ef63c6f8278775d358c7619cf673e06dd5c731e9f66a7a59cd17",
                          "typeString": "literal_string \"requesterPublic length is not 0.\""
                        },
                        "value": "requesterPublic length is not 0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b5fd84cfb685ef63c6f8278775d358c7619cf673e06dd5c731e9f66a7a59cd17",
                          "typeString": "literal_string \"requesterPublic length is not 0.\""
                        }
                      ],
                      "id": 1036,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4291:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4291:80:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1044,
                  "nodeType": "ExpressionStatement",
                  "src": "4291:80:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1045,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "4381:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4381:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "4381:9:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1031,
                        "src": "5494:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1050,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "serverKeyId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 883,
                      "src": "5494:19:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1051,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 997,
                      "src": "5516:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5494:33:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1053,
                  "nodeType": "ExpressionStatement",
                  "src": "5494:33:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1054,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1031,
                        "src": "5537:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1056,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "requesterPublic",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 885,
                      "src": "5537:23:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1057,
                      "name": "requesterPublic",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 999,
                      "src": "5563:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "5537:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1059,
                  "nodeType": "ExpressionStatement",
                  "src": "5537:41:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1063,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "5632:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1060,
                        "name": "documentKeyShadowRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1684,
                        "src": "5588:38:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5588:43:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 1064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5588:56:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1065,
                  "nodeType": "ExpressionStatement",
                  "src": "5588:56:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1067,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 997,
                        "src": "5696:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1068,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "5709:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5709:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1066,
                      "name": "DocumentKeyCommonRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        938
                      ],
                      "referencedDeclaration": 938,
                      "src": "5660:35:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5660:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1071,
                  "nodeType": "EmitStatement",
                  "src": "5655:65:4"
                }
              ]
            },
            "documentation": "Request document key retrieval.",
            "id": 1073,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1002,
                    "name": "documentKeyShadowRetrievalFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1675,
                    "src": "3787:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 1003,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1001,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "3775:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3775:42:4"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1005,
                    "name": "requesterPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 999,
                    "src": "3838:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1004,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "3826:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3826:28:4"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1008,
                    "name": "requesterPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 999,
                    "src": "3879:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1009,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1007,
                  "name": "onlyPublicOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 932,
                  "src": "3863:15:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3863:32:4"
              }
            ],
            "name": "retrieveDocumentKeyShadow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 997,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3706:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 996,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3706:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 999,
                  "name": "requesterPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3727:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 998,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3705:44:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 1010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3900:0:4"
            },
            "scope": 1685,
            "src": "3671:2056:4",
            "stateMutability": "payable",
            "superFunction": 799,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1193,
              "nodeType": "Block",
              "src": "5975:1710:4",
              "statements": [
                {
                  "assignments": [
                    1088
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1088,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6026:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1087,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6026:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1096,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1092,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "6075:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1093,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "6088:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1090,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "6058:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6058:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6058:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1089,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "6048:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6048:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6026:73:4"
                },
                {
                  "assignments": [
                    1098
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1098,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6109:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1097,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "6109:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1102,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1099,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "6161:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1101,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1100,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1088,
                      "src": "6196:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6161:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6109:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1103,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "6222:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1104,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "6222:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1109,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1105,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1098,
                            "src": "6260:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                            }
                          },
                          "id": 1106,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "requesterPublic",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 885,
                          "src": "6260:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 1107,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6260:30:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6294:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6260:35:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6222:73:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1113,
                  "nodeType": "IfStatement",
                  "src": "6218:110:4",
                  "trueBody": {
                    "id": 1112,
                    "nodeType": "Block",
                    "src": "6297:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1111,
                        "nodeType": "Return",
                        "src": "6311:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1115
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1115,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6365:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1114,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6365:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1120,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "6405:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6405:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1116,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "6388:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6388:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6365:51:4"
                },
                {
                  "assignments": [
                    1122
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1122,
                      "name": "commonResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6426:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1121,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6426:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1130,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1126,
                            "name": "commonPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1079,
                            "src": "6478:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1127,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1081,
                            "src": "6491:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1124,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "6461:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6461:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6461:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1123,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "6451:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6451:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6426:76:4"
                },
                {
                  "assignments": [
                    1132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1132,
                      "name": "commonResponseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 1194,
                      "src": "6512:37:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1131,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "6512:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1134,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1098,
                          "src": "6580:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonRetrievalResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 887,
                        "src": "6580:32:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1136,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1115,
                        "src": "6626:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1137,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "6654:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6654:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6674:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "6654:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1141,
                        "name": "commonResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1122,
                        "src": "6689:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1133,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "6552:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 1142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6552:152:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6512:192:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1144,
                      "name": "commonResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1132,
                      "src": "6771:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1145,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "6796:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6796:27:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "6771:52:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1150,
                  "nodeType": "IfStatement",
                  "src": "6767:112:4",
                  "trueBody": {
                    "id": 1149,
                    "nodeType": "Block",
                    "src": "6825:54:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1148,
                        "nodeType": "Return",
                        "src": "6862:7:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1151,
                      "name": "commonResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1132,
                      "src": "6980:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "7005:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Impossible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7005:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "6980:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1167,
                  "nodeType": "IfStatement",
                  "src": "6976:236:4",
                  "trueBody": {
                    "id": 1166,
                    "nodeType": "Block",
                    "src": "7033:179:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1156,
                              "name": "retrievalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1088,
                              "src": "7086:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1157,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "7099:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            ],
                            "id": 1155,
                            "name": "clearDocumentKeyShadowRetrievalRequest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1673,
                            "src": "7047:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                              "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                            }
                          },
                          "id": 1158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7047:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1159,
                        "nodeType": "ExpressionStatement",
                        "src": "7047:60:4"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1161,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "7158:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1162,
                              "name": "requester",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "7171:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1160,
                            "name": "DocumentKeyShadowRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              970
                            ],
                            "referencedDeclaration": 970,
                            "src": "7126:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7126:55:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1164,
                        "nodeType": "EmitStatement",
                        "src": "7121:60:4"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1086,
                        "id": 1165,
                        "nodeType": "Return",
                        "src": "7195:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1168,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "7264:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "7264:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7301:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7264:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1173,
                  "nodeType": "ExpressionStatement",
                  "src": "7264:41:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1174,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1098,
                        "src": "7315:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1176,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "threshold",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 891,
                      "src": "7315:17:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1177,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1081,
                      "src": "7335:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7315:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1179,
                  "nodeType": "ExpressionStatement",
                  "src": "7315:29:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1181,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1075,
                        "src": "7505:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1182,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1077,
                        "src": "7530:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1183,
                        "name": "commonPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1079,
                        "src": "7553:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1184,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1081,
                        "src": "7578:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 1180,
                      "name": "DocumentKeyCommonRetrieved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        954
                      ],
                      "referencedDeclaration": 954,
                      "src": "7465:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,uint8)"
                      }
                    },
                    "id": 1185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7465:123:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1186,
                  "nodeType": "EmitStatement",
                  "src": "7460:128:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1075,
                        "src": "7641:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1189,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1098,
                          "src": "7654:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "7654:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "id": 1187,
                      "name": "DocumentKeyPersonalRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        944
                      ],
                      "referencedDeclaration": 944,
                      "src": "7603:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7603:75:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1192,
                  "nodeType": "EmitStatement",
                  "src": "7598:80:4"
                }
              ]
            },
            "documentation": "Called when common data is reported by key server.",
            "id": 1194,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1084,
                    "name": "commonPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1079,
                    "src": "5958:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1085,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1083,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "5946:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5946:24:4"
              }
            ],
            "name": "documentKeyCommonRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1075,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5837:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1074,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5837:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1077,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5866:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1076,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5866:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1079,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5893:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1078,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5893:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1081,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 1194,
                  "src": "5920:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5920:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5827:109:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5975:0:4"
            },
            "scope": 1685,
            "src": "5792:1893:4",
            "stateMutability": "nonpayable",
            "superFunction": 823,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "7982:1976:4",
              "statements": [
                {
                  "assignments": [
                    1211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1211,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8033:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1210,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8033:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1219,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1215,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1196,
                            "src": "8082:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1216,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1198,
                            "src": "8095:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1213,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8065:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8065:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8065:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1212,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8055:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8055:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8033:73:4"
                },
                {
                  "assignments": [
                    1221
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1221,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8116:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1220,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "8116:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1225,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1222,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "8168:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1224,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1223,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1211,
                      "src": "8203:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8168:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8116:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1226,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1221,
                          "src": "8229:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1227,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "8229:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      "id": 1228,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8229:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8263:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8229:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1233,
                  "nodeType": "IfStatement",
                  "src": "8225:72:4",
                  "trueBody": {
                    "id": 1232,
                    "nodeType": "Block",
                    "src": "8266:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1209,
                        "id": 1231,
                        "nodeType": "Return",
                        "src": "8280:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1235,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1221,
                          "src": "8383:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1236,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isCommonRetrievalCompleted",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 889,
                        "src": "8383:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c657465642e",
                        "id": 1237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8419:36:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3d3a2c651fe239a0b315002149a5f5df48f1349b3c6d4ac829c6fb6d754e941c",
                          "typeString": "literal_string \"Common retrieval is not completed.\""
                        },
                        "value": "Common retrieval is not completed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3d3a2c651fe239a0b315002149a5f5df48f1349b3c6d4ac829c6fb6d754e941c",
                          "typeString": "literal_string \"Common retrieval is not completed.\""
                        }
                      ],
                      "id": 1234,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8375:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8375:81:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1239,
                  "nodeType": "ExpressionStatement",
                  "src": "8375:81:4"
                },
                {
                  "assignments": [
                    1241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1241,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8669:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1240,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8669:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1246,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1243,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "8709:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8709:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1242,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "8692:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8692:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8669:51:4"
                },
                {
                  "assignments": [
                    1248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1248,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8730:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8730:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1255,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8763:1:4",
                              "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": 1249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8755:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8755:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1252,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1241,
                          "src": "8769:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "8755:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 1254,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8754:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8730:54:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1257,
                                "name": "participants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1200,
                                "src": "8803:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1258,
                                "name": "keyServerMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1248,
                                "src": "8818:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8803:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1260,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8802:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8836:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8802:35:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4b65792073657276657220646f6573206e6f74206861766520616e20656e74727920696e207061727469636970616e74732e",
                        "id": 1263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8839:52:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9ab9f2c3480daa905ff83fdb992c1579e3e974c79400ccb8db8e6c5c940847fa",
                          "typeString": "literal_string \"Key server does not have an entry in participants.\""
                        },
                        "value": "Key server does not have an entry in participants."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9ab9f2c3480daa905ff83fdb992c1579e3e974c79400ccb8db8e6c5c940847fa",
                          "typeString": "literal_string \"Key server does not have an entry in participants.\""
                        }
                      ],
                      "id": 1256,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8794:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8794:98:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1265,
                  "nodeType": "ExpressionStatement",
                  "src": "8794:98:4"
                },
                {
                  "assignments": [
                    1267
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1267,
                      "name": "personalDataId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "8939:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1266,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8939:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1275,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1271,
                            "name": "participants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "8991:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1272,
                            "name": "decryptedSecret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1202,
                            "src": "9005:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8974:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8974:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8974:47:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1268,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8964:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8964:58:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8939:83:4"
                },
                {
                  "assignments": [
                    1277
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1277,
                      "name": "personalData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "9032:51:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1276,
                        "name": "DocumentKeyShadowRetrievalData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 910,
                        "src": "9032:30:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1282,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1278,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9086:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "personalData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 902,
                      "src": "9086:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref)"
                      }
                    },
                    "id": 1281,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1280,
                      "name": "personalDataId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "9107:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9086:36:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9032:90:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1283,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9136:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1284,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "participants",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 905,
                      "src": "9136:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1285,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9165:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9136:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1313,
                    "nodeType": "Block",
                    "src": "9298:112:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1303,
                                        "name": "personalData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1277,
                                        "src": "9321:12:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                                        }
                                      },
                                      "id": 1304,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reported",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 907,
                                      "src": "9321:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1305,
                                      "name": "keyServerMask",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1248,
                                      "src": "9345:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9321:37:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1307,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9320:39:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9363:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9320:44:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506572736f6e616c2064617461206973206e6f74207265706f727465642e",
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9366:32:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b9bd69fd7e82b11f72277d300ff33a11d5fad20c623786b5f71f77d62bde4233",
                                "typeString": "literal_string \"Personal data is not reported.\""
                              },
                              "value": "Personal data is not reported."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b9bd69fd7e82b11f72277d300ff33a11d5fad20c623786b5f71f77d62bde4233",
                                "typeString": "literal_string \"Personal data is not reported.\""
                              }
                            ],
                            "id": 1302,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4841,
                              4842
                            ],
                            "referencedDeclaration": 4842,
                            "src": "9312:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9312:87:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1312,
                        "nodeType": "ExpressionStatement",
                        "src": "9312:87:4"
                      }
                    ]
                  },
                  "id": 1314,
                  "nodeType": "IfStatement",
                  "src": "9132:278:4",
                  "trueBody": {
                    "id": 1301,
                    "nodeType": "Block",
                    "src": "9168:124:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1292,
                              "name": "personalDataId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1267,
                              "src": "9212:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1287,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1221,
                                "src": "9182:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1290,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "personalDataKeys",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 898,
                              "src": "9182:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 1291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9182:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 1293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9182:45:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1294,
                        "nodeType": "ExpressionStatement",
                        "src": "9182:45:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1295,
                              "name": "personalData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1277,
                              "src": "9241:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                              }
                            },
                            "id": 1297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "participants",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 905,
                            "src": "9241:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1298,
                            "name": "participants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "9269:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9241:40:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1300,
                        "nodeType": "ExpressionStatement",
                        "src": "9241:40:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1315,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9447:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1317,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reportedCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 909,
                      "src": "9447:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9477:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9447:31:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1320,
                  "nodeType": "ExpressionStatement",
                  "src": "9447:31:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1321,
                        "name": "personalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1277,
                        "src": "9488:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                        }
                      },
                      "id": 1323,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reported",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "9488:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1324,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1248,
                      "src": "9513:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9488:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1326,
                  "nodeType": "ExpressionStatement",
                  "src": "9488:38:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1328,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1196,
                        "src": "9620:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1329,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1198,
                        "src": "9645:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1330,
                        "name": "decryptedSecret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "9668:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1331,
                        "name": "shadow",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1204,
                        "src": "9697:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1327,
                      "name": "DocumentKeyPersonalRetrieved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        964
                      ],
                      "referencedDeclaration": 964,
                      "src": "9578:28:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,bytes memory)"
                      }
                    },
                    "id": 1332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9578:126:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1333,
                  "nodeType": "EmitStatement",
                  "src": "9573:131:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1334,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9771:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1335,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "threshold",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 891,
                      "src": "9771:17:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 1339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1336,
                          "name": "personalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1277,
                          "src": "9792:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage pointer"
                          }
                        },
                        "id": 1337,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reportedCount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 909,
                        "src": "9792:26:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9821:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "9792:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "9771:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1343,
                  "nodeType": "IfStatement",
                  "src": "9767:88:4",
                  "trueBody": {
                    "id": 1342,
                    "nodeType": "Block",
                    "src": "9824:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1209,
                        "id": 1341,
                        "nodeType": "Return",
                        "src": "9838:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1345,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1211,
                        "src": "9930:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1346,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1221,
                        "src": "9943:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1344,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "9891:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9891:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1348,
                  "nodeType": "ExpressionStatement",
                  "src": "9891:60:4"
                }
              ]
            },
            "documentation": "Called when 'personal' data is reported by key server.",
            "id": 1350,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1207,
                    "name": "decryptedSecret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1202,
                    "src": "7961:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1208,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1206,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "7949:11:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7949:28:4"
              }
            ],
            "name": "documentKeyPersonalRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1196,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7801:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1195,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7801:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1198,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7830:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7830:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1200,
                  "name": "participants",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7857:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1199,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7857:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1202,
                  "name": "decryptedSecret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7887:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7887:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "name": "shadow",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "7918:12:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7918:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7791:140:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7982:0:4"
            },
            "scope": 1685,
            "src": "7754:2204:4",
            "stateMutability": "nonpayable",
            "superFunction": 836,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1482,
              "nodeType": "Block",
              "src": "10125:2781:4",
              "statements": [
                {
                  "assignments": [
                    1358
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1358,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10176:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1357,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10176:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1366,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1362,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "10225:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1363,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1354,
                            "src": "10238:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1360,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "10208:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10208:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10208:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1359,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "10198:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10198:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10176:73:4"
                },
                {
                  "assignments": [
                    1368
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1368,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10259:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1367,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "10259:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1372,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1369,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "10311:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1371,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1370,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1358,
                      "src": "10346:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10311:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10259:99:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1373,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1368,
                          "src": "10372:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "10372:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      "id": 1375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10372:30:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10406:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10372:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1380,
                  "nodeType": "IfStatement",
                  "src": "10368:72:4",
                  "trueBody": {
                    "id": 1379,
                    "nodeType": "Block",
                    "src": "10409:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1378,
                        "nodeType": "Return",
                        "src": "10423:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1382
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1382,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "10551:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1381,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "10551:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1387,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1384,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "10591:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10591:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1383,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "10574:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10574:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10551:51:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10616:35:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1388,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "10617:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "10617:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1429,
                  "nodeType": "IfStatement",
                  "src": "10612:831:4",
                  "trueBody": {
                    "id": 1428,
                    "nodeType": "Block",
                    "src": "10653:790:4",
                    "statements": [
                      {
                        "assignments": [
                          1392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1392,
                            "name": "invalidResponse",
                            "nodeType": "VariableDeclaration",
                            "scope": 1483,
                            "src": "10698:23:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1391,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10698:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1396,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646",
                              "id": 1394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10732:66:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              },
                              "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              }
                            ],
                            "id": 1393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10724:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 1395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10724:75:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10698:101:4"
                      },
                      {
                        "assignments": [
                          1398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1398,
                            "name": "invalidResponseSupport",
                            "nodeType": "VariableDeclaration",
                            "scope": 1483,
                            "src": "10813:38:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1397,
                              "name": "ResponseSupport",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2994,
                              "src": "10813:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1409,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1400,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1368,
                                "src": "10886:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1401,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "commonRetrievalResponses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 887,
                              "src": "10886:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1402,
                              "name": "keyServerIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1382,
                              "src": "10936:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 1406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1403,
                                  "name": "keyServersCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3060,
                                  "src": "10968:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                    "typeString": "function () view returns (uint8)"
                                  }
                                },
                                "id": 1404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10968:17:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10988:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "10968:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1407,
                              "name": "invalidResponse",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1392,
                              "src": "11007:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1399,
                            "name": "insertResponse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3378,
                            "src": "10854:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10854:169:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10813:210:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          },
                          "id": 1413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1410,
                            "name": "invalidResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1398,
                            "src": "11125:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1411,
                              "name": "ResponseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "11151:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                              }
                            },
                            "id": 1412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Unconfirmed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11151:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                              "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                            }
                          },
                          "src": "11125:53:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1416,
                        "nodeType": "IfStatement",
                        "src": "11121:98:4",
                        "trueBody": {
                          "id": 1415,
                          "nodeType": "Block",
                          "src": "11180:39:4",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 1356,
                              "id": 1414,
                              "nodeType": "Return",
                              "src": "11198:7:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1418,
                              "name": "retrievalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1358,
                              "src": "11317:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1419,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1368,
                              "src": "11330:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            ],
                            "id": 1417,
                            "name": "clearDocumentKeyShadowRetrievalRequest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1673,
                            "src": "11278:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                              "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                            }
                          },
                          "id": 1420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11278:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1421,
                        "nodeType": "ExpressionStatement",
                        "src": "11278:60:4"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1423,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1352,
                              "src": "11389:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1424,
                              "name": "requester",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1354,
                              "src": "11402:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1422,
                            "name": "DocumentKeyShadowRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              970
                            ],
                            "referencedDeclaration": 970,
                            "src": "11357:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11357:55:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1426,
                        "nodeType": "EmitStatement",
                        "src": "11352:60:4"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1427,
                        "nodeType": "Return",
                        "src": "11426:7:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1431
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1431,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 1483,
                      "src": "12303:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12303:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1437,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12335:1:4",
                          "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": 1432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12327:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12327:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1435,
                      "name": "keyServerIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1382,
                      "src": "12341:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12327:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12303:52:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1438,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1368,
                              "src": "12370:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                              }
                            },
                            "id": 1439,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "personalRetrievalErrors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 893,
                            "src": "12370:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1440,
                            "name": "keyServerMask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "12404:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12370:47:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1442,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12369:49:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1443,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12422:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12369:54:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1447,
                  "nodeType": "IfStatement",
                  "src": "12365:91:4",
                  "trueBody": {
                    "id": 1446,
                    "nodeType": "Block",
                    "src": "12425:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1445,
                        "nodeType": "Return",
                        "src": "12439:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1448,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12465:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1450,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "personalRetrievalErrors",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 893,
                      "src": "12465:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1451,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1431,
                      "src": "12500:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12465:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1453,
                  "nodeType": "ExpressionStatement",
                  "src": "12465:48:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1454,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12523:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1456,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "personalRetrievalErrorsCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 895,
                      "src": "12523:36:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12563:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "12523:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1459,
                  "nodeType": "ExpressionStatement",
                  "src": "12523:41:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1460,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12621:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1461,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "personalRetrievalErrorsCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 895,
                      "src": "12621:36:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 1467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1462,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "12660:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12660:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12680:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12660:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12684:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "12660:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12621:64:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1471,
                  "nodeType": "IfStatement",
                  "src": "12617:101:4",
                  "trueBody": {
                    "id": 1470,
                    "nodeType": "Block",
                    "src": "12687:31:4",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1356,
                        "id": 1469,
                        "nodeType": "Return",
                        "src": "12701:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1473,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1358,
                        "src": "12808:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1474,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1368,
                        "src": "12821:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1472,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "12769:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12769:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1476,
                  "nodeType": "ExpressionStatement",
                  "src": "12769:60:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1478,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1352,
                        "src": "12876:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1479,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "12889:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1477,
                      "name": "DocumentKeyShadowRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        970
                      ],
                      "referencedDeclaration": 970,
                      "src": "12844:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12844:55:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1481,
                  "nodeType": "EmitStatement",
                  "src": "12839:60:4"
                }
              ]
            },
            "documentation": "Called when error occurs during document key shadow retrieval.",
            "id": 1483,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyShadowRetrievalError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1483,
                  "src": "10076:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10076:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1354,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1483,
                  "src": "10097:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1353,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10097:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10075:40:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1356,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10125:0:4"
            },
            "scope": 1685,
            "src": "10035:2871:4",
            "stateMutability": "nonpayable",
            "superFunction": 843,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1491,
              "nodeType": "Block",
              "src": "13064:69:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1488,
                      "name": "documentKeyShadowRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1684,
                      "src": "13081:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1489,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13081:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1487,
                  "id": 1490,
                  "nodeType": "Return",
                  "src": "13074:52:4"
                }
              ]
            },
            "documentation": "Get count of pending document key shadow retrieval requests.",
            "id": 1492,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "documentKeyShadowRetrievalRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13029:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1486,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1492,
                  "src": "13055:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13055:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13054:9:4"
            },
            "scope": 1685,
            "src": "12981:152:4",
            "stateMutability": "view",
            "superFunction": 848,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1523,
              "nodeType": "Block",
              "src": "13389:338:4",
              "statements": [
                {
                  "assignments": [
                    1504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1504,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "13399:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1503,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13399:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1508,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1505,
                      "name": "documentKeyShadowRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1684,
                      "src": "13421:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1507,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1506,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1494,
                      "src": "13460:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13421:45:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13399:67:4"
                },
                {
                  "assignments": [
                    1510
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1510,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "13476:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1509,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "13476:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1514,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1511,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "13528:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1513,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1512,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1504,
                      "src": "13563:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13528:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13476:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1515,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13606:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1516,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "serverKeyId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 883,
                        "src": "13606:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1517,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13639:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1518,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "requesterPublic",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 885,
                        "src": "13639:23:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1519,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1510,
                          "src": "13676:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1520,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isCommonRetrievalCompleted",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 889,
                        "src": "13676:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1521,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13592:128:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_storage_$_t_bool_$",
                      "typeString": "tuple(bytes32,bytes storage ref,bool)"
                    }
                  },
                  "functionReturnParameters": 1502,
                  "id": 1522,
                  "nodeType": "Return",
                  "src": "13585:135:4"
                }
              ]
            },
            "documentation": "Get document key shadow retrieval request with given index.\n Returns: (serverKeyId, requesterPublic, isCommonRetrievalCompleted)",
            "id": 1524,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1494,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13329:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13329:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13328:15:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1497,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13367:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1496,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13367:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1499,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13376:5:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1498,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13376:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1501,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1524,
                  "src": "13383:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1500,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13383:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13366:22:4"
            },
            "scope": 1685,
            "src": "13283:444:4",
            "stateMutability": "view",
            "superFunction": 859,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1566,
              "nodeType": "Block",
              "src": "13969:470:4",
              "statements": [
                {
                  "assignments": [
                    1536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "13979:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1535,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13979:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1540,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1538,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1530,
                        "src": "14019:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1537,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "14002:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14002:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13979:50:4"
                },
                {
                  "assignments": [
                    1542
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1542,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "14039:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1541,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14039:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1550,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1546,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "14088:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1547,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1528,
                            "src": "14101:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1544,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "14071:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14071:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14071:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1543,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "14061:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14061:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14039:73:4"
                },
                {
                  "assignments": [
                    1552
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1552,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "14122:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1551,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "14122:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1556,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1553,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "14174:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1554,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1542,
                      "src": "14209:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14174:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14122:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1557,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1552,
                        "src": "14314:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      },
                      "id": 1558,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isCommonRetrievalCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "14314:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1560,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1552,
                            "src": "14383:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                            }
                          },
                          "id": 1561,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commonRetrievalResponses",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 887,
                          "src": "14383:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "14417:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 1559,
                        "name": "isResponseRequired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "14364:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$returns$_t_bool_$",
                          "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8) view returns (bool)"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14364:68:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "14314:118:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1534,
                  "id": 1565,
                  "nodeType": "Return",
                  "src": "14307:125:4"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 1567,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isDocumentKeyShadowRetrievalResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1526,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13853:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1525,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13853:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1528,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13874:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13874:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1530,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13893:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13893:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13852:59:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1567,
                  "src": "13959:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1532,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13959:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13958:6:4"
            },
            "scope": 1685,
            "src": "13799:640:4",
            "stateMutability": "view",
            "superFunction": 870,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1578,
              "nodeType": "Block",
              "src": "14626:55:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1574,
                      "name": "documentKeyShadowRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1675,
                      "src": "14636:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1575,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1569,
                      "src": "14668:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14636:38:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1577,
                  "nodeType": "ExpressionStatement",
                  "src": "14636:38:4"
                }
              ]
            },
            "documentation": "Set document key shadow retrieval fee.",
            "id": 1579,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1571,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "14612:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14612:9:4"
              }
            ],
            "name": "setDocumentKeyShadowRetrievalFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1569,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 1579,
                  "src": "14573:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1568,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14573:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14572:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14626:0:4"
            },
            "scope": 1685,
            "src": "14531:150:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1590,
              "nodeType": "Block",
              "src": "14850:65:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1586,
                      "name": "maxDocumentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "14860:37:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1587,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1581,
                      "src": "14900:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14860:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1589,
                  "nodeType": "ExpressionStatement",
                  "src": "14860:48:4"
                }
              ]
            },
            "documentation": "Set document key shadow retrieval requests limit.",
            "id": 1591,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1584,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1583,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "14836:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14836:9:4"
              }
            ],
            "name": "setMaxDocumentKeyShadowRetrievalRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1582,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1581,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1591,
                  "src": "14795:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1580,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14795:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14794:18:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1585,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14850:0:4"
            },
            "scope": 1685,
            "src": "14745:170:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1626,
              "nodeType": "Block",
              "src": "15101:340:4",
              "statements": [
                {
                  "assignments": [
                    1601
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1601,
                      "name": "retrievalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1627,
                      "src": "15111:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1600,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15111:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1605,
                            "name": "serverKeyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1593,
                            "src": "15160:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1606,
                            "name": "requester",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1595,
                            "src": "15173:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1603,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "15143:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15143:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15143:40:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1602,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "15133:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15133:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15111:73:4"
                },
                {
                  "assignments": [
                    1611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1611,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1627,
                      "src": "15194:49:4",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1610,
                        "name": "DocumentKeyShadowRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 903,
                        "src": "15194:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1615,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1612,
                      "name": "documentKeyShadowRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1681,
                      "src": "15246:34:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                      }
                    },
                    "id": 1614,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1613,
                      "name": "retrievalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1601,
                      "src": "15281:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15246:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15194:99:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1617,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1601,
                        "src": "15342:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1618,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1611,
                        "src": "15355:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 1616,
                      "name": "clearDocumentKeyShadowRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1673,
                      "src": "15303:38:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 1619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15303:60:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1620,
                  "nodeType": "ExpressionStatement",
                  "src": "15303:60:4"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1622,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1593,
                        "src": "15411:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1623,
                        "name": "requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1595,
                        "src": "15424:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1621,
                      "name": "DocumentKeyShadowRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        970
                      ],
                      "referencedDeclaration": 970,
                      "src": "15379:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15379:55:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1625,
                  "nodeType": "EmitStatement",
                  "src": "15374:60:4"
                }
              ]
            },
            "documentation": "Delete document key shadow retrieval request.",
            "id": 1627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1598,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1597,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "15087:9:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15087:9:4"
              }
            ],
            "name": "deleteDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1593,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1627,
                  "src": "15024:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1592,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15024:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1595,
                  "name": "requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 1627,
                  "src": "15045:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15045:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15023:40:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1599,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15101:0:4"
            },
            "scope": 1685,
            "src": "14975:466:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1672,
              "nodeType": "Block",
              "src": "15668:358:4",
              "statements": [
                {
                  "body": {
                    "id": 1655,
                    "nodeType": "Block",
                    "src": "15737:81:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "15751:56:4",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1646,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1631,
                                "src": "15758:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                }
                              },
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "personalData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 902,
                              "src": "15758:20:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalData_$910_storage_$",
                                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref)"
                              }
                            },
                            "id": 1652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1648,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1631,
                                  "src": "15779:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                                    "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                                  }
                                },
                                "id": 1649,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "personalDataKeys",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 898,
                                "src": "15779:24:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 1651,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1650,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1635,
                                "src": "15804:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15779:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15758:49:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalData_$910_storage",
                              "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalData storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1654,
                        "nodeType": "ExpressionStatement",
                        "src": "15751:56:4"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1638,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1635,
                      "src": "15695:1:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1639,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1631,
                          "src": "15699:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1640,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "personalDataKeys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 898,
                        "src": "15699:24:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1641,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15699:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15695:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1656,
                  "initializationExpression": {
                    "assignments": [
                      1635
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1635,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1673,
                        "src": "15683:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1634,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15683:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1637,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15692:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15683:10:4"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "15732:3:4",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1643,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1635,
                        "src": "15734:1:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1645,
                    "nodeType": "ExpressionStatement",
                    "src": "15732:3:4"
                  },
                  "nodeType": "ForStatement",
                  "src": "15678:140:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1658,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1631,
                          "src": "15842:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage pointer"
                          }
                        },
                        "id": 1659,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonRetrievalResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 887,
                        "src": "15842:32:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      ],
                      "id": 1657,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "15827:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 1660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15827:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1661,
                  "nodeType": "ExpressionStatement",
                  "src": "15827:48:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "15885:54:4",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1662,
                        "name": "documentKeyShadowRetrievalRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1681,
                        "src": "15892:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref)"
                        }
                      },
                      "id": 1664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1663,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1629,
                        "src": "15927:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15892:47:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage",
                        "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1666,
                  "nodeType": "ExpressionStatement",
                  "src": "15885:54:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1668,
                        "name": "documentKeyShadowRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1684,
                        "src": "15967:38:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1669,
                        "name": "retrievalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1629,
                        "src": "16007:11:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1667,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "15950:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 1670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15950:69:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1671,
                  "nodeType": "ExpressionStatement",
                  "src": "15950:69:4"
                }
              ]
            },
            "documentation": "Clear document key shadow retrieval request traces.",
            "id": 1673,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearDocumentKeyShadowRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1629,
                  "name": "retrievalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1673,
                  "src": "15588:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1628,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15588:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1631,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 1673,
                  "src": "15609:49:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                    "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1630,
                    "name": "DocumentKeyShadowRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 903,
                    "src": "15609:33:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15587:72:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 1633,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15668:0:4"
            },
            "scope": 1685,
            "src": "15540:486:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1675,
            "name": "documentKeyShadowRetrievalFee",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16075:44:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1674,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "16075:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1677,
            "name": "maxDocumentKeyShadowRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16280:52:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1676,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "16280:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1681,
            "name": "documentKeyShadowRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16371:97:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest)"
            },
            "typeName": {
              "id": 1680,
              "keyType": {
                "id": 1678,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "16380:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "16371:54:4",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1679,
                "name": "DocumentKeyShadowRetrievalRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 903,
                "src": "16391:33:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentKeyShadowRetrievalRequest_$903_storage_ptr",
                  "typeString": "struct SecretStoreDocumentKeyShadowRetrievalService.DocumentKeyShadowRetrievalRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1684,
            "name": "documentKeyShadowRetrievalRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 1685,
            "src": "16511:56:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1682,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "16511:7:4",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1683,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "16511:9:4",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 1686,
        "src": "906:15664:4"
      }
    ],
    "src": "709:15862:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-01-23T09:53:59.497Z"
}