{
  "contractName": "Signature",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "userContract",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "id",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "documentsId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "createdAt",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signaturit",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "signatureId",
          "type": "string"
        },
        {
          "name": "deployerAddress",
          "type": "address"
        },
        {
          "name": "signatureCreatedAt",
          "type": "int256"
        },
        {
          "name": "signatureOwner",
          "type": "address"
        },
        {
          "name": "userSmartContractAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "attribute",
          "type": "string"
        },
        {
          "name": "adr",
          "type": "address"
        }
      ],
      "name": "notify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyCreation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "signatureType",
          "type": "string"
        },
        {
          "name": "documentCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "createDocument",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "documentOwner",
          "type": "address"
        }
      ],
      "name": "setDocumentOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "signedFileHash",
          "type": "string"
        }
      ],
      "name": "setSignedFileHash",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "cancelReason",
          "type": "string"
        }
      ],
      "name": "cancelDocument",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "fileId",
          "type": "string"
        },
        {
          "name": "fileName",
          "type": "string"
        },
        {
          "name": "fileHash",
          "type": "string"
        },
        {
          "name": "fileCreatedAt",
          "type": "uint256"
        },
        {
          "name": "fileSize",
          "type": "uint256"
        }
      ],
      "name": "createFile",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "eventId",
          "type": "string"
        },
        {
          "name": "eventType",
          "type": "string"
        },
        {
          "name": "eventUserAgent",
          "type": "string"
        },
        {
          "name": "eventCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "createEvent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "clauseType",
          "type": "string"
        }
      ],
      "name": "getClause",
      "outputs": [
        {
          "name": "clauseAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        }
      ],
      "name": "getDocument",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getDocumentByIndex",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDocumentsSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        }
      ],
      "name": "getFile",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "eventId",
          "type": "string"
        }
      ],
      "name": "getEvent",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002b0938038062002b09833981018060405260a08110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b5050602082810151604084015160608501516080909501516009805433600160a060020a031991821617909155600a80548216600160a060020a0380871691909117909155600b80548316828a1617905560118054909216908316179055845194975091955093929091620000fa91600c9188019062000109565b505050600e5550620001ae9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b620001ab91905b808211156200018a576000815560010162000195565b90565b61294b80620001be6000396000f3fe6080604052600436106101035763ffffffff60e060020a6000350416633764a7cd811461010857806341e4422f1461014e57806345608dd11461028857806346c3cf9c146103be5780635000596b1461047a578063547153901461048f5780637ccb6a64146106d45780638da5cb5b1461078557806393fa656e1461079a5780639d79916c146107c1578063a3474265146108f7578063af640d0f146109a8578063bdcf5b8e14610a32578063c918ef3814610c74578063c97782c314610daa578063cf09e0d014610dd4578063d5f3948814610de9578063e0876aa814610dfe578063e2b4cf4c14610eaf578063e71e657614610ec4578063f9b5333514610f80575b600080fd5b34801561011457600080fd5b506101326004803603602081101561012b57600080fd5b5035610f95565b60408051600160a060020a039092168252519081900360200190f35b34801561015a57600080fd5b506102866004803603606081101561017157600080fd5b810190602081018135602060020a81111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111602060020a831117156101be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561021057600080fd5b82018360208201111561022257600080fd5b803590602001918460018302840111602060020a8311171561024357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611049915050565b005b34801561029457600080fd5b50610286600480360360408110156102ab57600080fd5b810190602081018135602060020a8111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111602060020a831117156102f857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561034a57600080fd5b82018360208201111561035c57600080fd5b803590602001918460018302840111602060020a8311171561037d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061123f945050505050565b3480156103ca57600080fd5b50610286600480360360408110156103e157600080fd5b810190602081018135602060020a8111156103fb57600080fd5b82018360208201111561040d57600080fd5b803590602001918460018302840111602060020a8311171561042e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506113919050565b34801561048657600080fd5b5061013261145d565b34801561049b57600080fd5b50610286600480360360c08110156104b257600080fd5b810190602081018135602060020a8111156104cc57600080fd5b8201836020820111156104de57600080fd5b803590602001918460018302840111602060020a831117156104ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561055157600080fd5b82018360208201111561056357600080fd5b803590602001918460018302840111602060020a8311171561058457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156105d657600080fd5b8201836020820111156105e857600080fd5b803590602001918460018302840111602060020a8311171561060957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460018302840111602060020a8311171561068e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561146c565b3480156106e057600080fd5b50610132600480360360208110156106f757600080fd5b810190602081018135602060020a81111561071157600080fd5b82018360208201111561072357600080fd5b803590602001918460018302840111602060020a8311171561074457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611687945050505050565b34801561079157600080fd5b5061013261170f565b3480156107a657600080fd5b506107af61171e565b60408051918252519081900360200190f35b3480156107cd57600080fd5b50610286600480360360408110156107e457600080fd5b810190602081018135602060020a8111156107fe57600080fd5b82018360208201111561081057600080fd5b803590602001918460018302840111602060020a8311171561083157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561088357600080fd5b82018360208201111561089557600080fd5b803590602001918460018302840111602060020a831117156108b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611725945050505050565b34801561090357600080fd5b506101326004803603602081101561091a57600080fd5b810190602081018135602060020a81111561093457600080fd5b82018360208201111561094657600080fd5b803590602001918460018302840111602060020a8311171561096757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117f5945050505050565b3480156109b457600080fd5b506109bd611828565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109f75781810151838201526020016109df565b50505050905090810190601f168015610a245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a3e57600080fd5b50610286600480360360a0811015610a5557600080fd5b810190602081018135602060020a811115610a6f57600080fd5b820183602082011115610a8157600080fd5b803590602001918460018302840111602060020a83111715610aa257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460018302840111602060020a83111715610b2757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610b7957600080fd5b820183602082011115610b8b57600080fd5b803590602001918460018302840111602060020a83111715610bac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610bfe57600080fd5b820183602082011115610c1057600080fd5b803590602001918460018302840111602060020a83111715610c3157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506118b6915050565b348015610c8057600080fd5b5061013260048036036040811015610c9757600080fd5b810190602081018135602060020a811115610cb157600080fd5b820183602082011115610cc357600080fd5b803590602001918460018302840111602060020a83111715610ce457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610d3657600080fd5b820183602082011115610d4857600080fd5b803590602001918460018302840111602060020a83111715610d6957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ac8945050505050565b348015610db657600080fd5b506109bd60048036036020811015610dcd57600080fd5b5035611c3b565b348015610de057600080fd5b506107af611caf565b348015610df557600080fd5b50610132611cb5565b348015610e0a57600080fd5b5061013260048036036020811015610e2157600080fd5b810190602081018135602060020a811115610e3b57600080fd5b820183602082011115610e4d57600080fd5b803590602001918460018302840111602060020a83111715610e6e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cc4945050505050565b348015610ebb57600080fd5b50610286611dc4565b348015610ed057600080fd5b5061028660048036036040811015610ee757600080fd5b810190602081018135602060020a811115610f0157600080fd5b820183602082011115610f1357600080fd5b803590602001918460018302840111602060020a83111715610f3457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a03169150611e989050565b348015610f8c57600080fd5b506101326120de565b600d5460009060001901821115610fae57506000611044565b600f600d83815481101515610fbf57fe5b9060005260206000200160405180828054600181600116156101000203166002900480156110245780601f10611002576101008083540402835291820191611024565b820191906000526020600020905b815481529060010190602001808311611010575b5050928352505060405190819003602001902054600160a060020a031690505b919050565b600954600160a060020a031632146110ad576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b60006110b8846120ed565b6040805160e060020a6238a5b50281526024810185905260048101918252855160448201528551929350600160a060020a038416926238a5b59287928792829160640190602086019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b5050600d80546001810180835560009290925287519193506111ca92507fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501906020880190612847565b5050611239604080519081016040528060128152602001607060020a71646f63756d656e742d6e6f74696669657273028152506040805190810160405280601981526020017f646f63756d656e742e636f6e74726163742e6372656174656400000000000000815250836124d2565b50505050565b600b54600160a060020a031633146112bb576040805160e560020a62461bcd02815260206004820152602e60248201527f4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f6044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006112c6836120ed565b60405160e060020a630b4f3f3d028152602060048201818152855160248401528551939450600160a060020a03851693630b4f3f3d93879383926044909201919085019080838360005b83811015611328578181015183820152602001611310565b50505050905090810190601f1680156113555780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b15801561137457600080fd5b505af1158015611388573d6000803e3d6000fd5b50505050505050565b600954600160a060020a031632146113f5576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611400836120ed565b905080600160a060020a03166313af4035836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561137457600080fd5b601154600160a060020a031681565b600954600160a060020a031632146114d0576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b60006114db876120ed565b905080600160a060020a0316636bee1e1b87878787876040518663ffffffff1660e060020a02815260040180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b8381101561155457818101518382015260200161153c565b50505050905090810190601f1680156115815780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156115b457818101518382015260200161159c565b50505050905090810190601f1680156115e15780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156116145781810151838201526020016115fc565b50505050905090810190601f1680156116415780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561166657600080fd5b505af115801561167a573d6000803e3d6000fd5b5050505050505050505050565b60006116928261272e565b15156116a057506000611044565b600f826040518082805190602001908083835b602083106116d25780518252601f1990920191602091820191016116b3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b600b54600160a060020a031681565b600d545b90565b600954600160a060020a03163214611789576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611794836120ed565b60405160e660020a6302abdb1d028152602060048201818152855160248401528551939450600160a060020a0385169363aaf6c740938793839260449092019190850190808383600083811015611328578181015183820152602001611310565b6000601082604051808280519060200190808383602083106116d25780518252601f1990920191602091820191016116b3565b600c805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156118ae5780601f10611883576101008083540402835291602001916118ae565b820191906000526020600020905b81548152906001019060200180831161189157829003601f168201915b505050505081565b600954600160a060020a0316321461191a576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611925866120ed565b905080600160a060020a031663de4cd842868686866040518563ffffffff1660e060020a02815260040180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b8381101561199757818101518382015260200161197f565b50505050905090810190601f1680156119c45780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156119f75781810151838201526020016119df565b50505050905090810190601f168015611a245780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611a57578181015183820152602001611a3f565b50505050905090810190601f168015611a845780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b50505050505050505050565b6000611ad38361272e565b1515611ae157506000611c35565b6000600f846040518082805190602001908083835b60208310611b155780518252601f199092019160209182019101611af6565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184205460e060020a63e190206302855260048501828152885160248701528851600160a060020a039092169563e19020639550899450909283926044909201919085019080838360005b83811015611ba0578181015183820152602001611b88565b50505050905090810190601f168015611bcd5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d6020811015611c1457600080fd5b50519050600160a060020a0381161515611c32576000915050611c35565b90505b92915050565b600d805482908110611c4957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156118ae5780601f10611883576101008083540402835291602001916118ae565b600e5481565b600a54600160a060020a031681565b6000611ccf8261272e565b1515611cdd57506000611044565b6000600f836040518082805190602001908083835b60208310611d115780518252601f199092019160209182019101611cf2565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185205460e060020a638525855d0286529051600160a060020a0390911694638525855d94506004808201945090829003018186803b158015611d7c57600080fd5b505afa158015611d90573d6000803e3d6000fd5b505050506040513d6020811015611da657600080fd5b50519050600160a060020a0381161515611c35576000915050611044565b600954600160a060020a03163214611e28576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b611e96604080519081016040528060138152602001606860020a727369676e61747572652d6e6f74696669657273028152506040805190810160405280601a81526020017f7369676e61747572652e636f6e74726163742e63726561746564000000000000815250306124d2565b565b600954600160a060020a03163214611efc576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b611f3a6040805190810160405280601681526020017f7061796d656e745f636c617573652e63726561746564000000000000000000008152506127ae565b611f43836127ae565b1415611fec57604080518082018252600780825260ca60020a661c185e5b595b9d026020830190815292518493601093928291908083835b60208310611f9a5780518252601f199092019160209182019101611f7b565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092208054600160a060020a031916600160a060020a039490941693909317909255506120da9050565b61202a6040805190810160405280601981526020017f74696d656c6f676765725f636c617573652e63726561746564000000000000008152506127ae565b612033836127ae565b14156120da57604080518082018252600a80825260b160020a693a34b6b2b637b3b3b2b9026020830190815292518493601093928291908083835b6020831061208d5780518252601f19909201916020918201910161206e565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092208054600160a060020a031916600160a060020a03949094169390931790925550505b5050565b600954600160a060020a031681565b60006120f88261272e565b1561216e57600f826040518082805190602001908083835b6020831061212f5780518252601f199092019160209182019101612110565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169250611044915050565b600a5460408051600160a060020a03909216604483018190526024830191825284516064840152845160009360609387928492829160849091019060208601908083838c5b838110156121cb5781810151838201526020016121b3565b50505050905090810190601f1680156121f85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e260020a63226ddea10217815290518251929650945084935091508083835b602083106122575780518252601f199092019160209182019101612238565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146122b7576040519150601f19603f3d011682016040523d82523d6000602084013e6122bc565b606091505b5091509150811515612318576040805160e560020a62461bcd02815260206004820152601e60248201527f4572726f72207768696c65206465706c6f79696e6720646f63756d656e740000604482015290519081900360640190fd5b61232181612840565b600f856040518082805190602001908083835b602083106123535780518252601f199092019160209182019101612334565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184208054600160a060020a031916600160a060020a03969096169590951790945550508551600f9287929182918401908083835b602083106123cf5780518252601f1990920191602091820191016123b0565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900390910184205460115460e060020a63acf635b9028652600160a060020a039081166004870152915191169363acf635b99350602480820193506000929182900301818387803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50505050600f846040518082805190602001908083835b602083106124935780518252601f199092019160209182019101612474565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169695505050505050565b6000805b6011546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b83811015612540578181015183820152602001612528565b50505050905090810190601f16801561256d5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561258b57600080fd5b505afa15801561259f573d6000803e3d6000fd5b505050506040513d60208110156125b557600080fd5b50519150600101600160a060020a038216156127175760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b83811015612620578181015183820152602001612608565b50505050905090810190601f16801561264d5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106126ac5780518252601f19909201916020918201910161268d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461270e576040519150601f19603f3d011682016040523d82523d6000602084013e612713565b606091505b5050505b600160a060020a03821615156124d6575050505050565b600080600160a060020a0316600f836040518082805190602001908083835b6020831061276c5780518252601f19909201916020918201910161274d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169290921415949350505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156127f15781810151838201526020016127d9565b50505050905090810190601f16801561281e5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001209050919050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061288857805160ff19168380011785556128b5565b828001600101855582156128b5579182015b828111156128b557825182559160200191906001019061289a565b506128c19291506128c5565b5090565b61172291905b808211156128c157600081556001016128cb56fe6f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79205369676e617475726974206163636f756e742063616e2070657266a165627a7a723058207f1f174d281b5224201987cec8a86bb71fc4d10ef306fe78fbd72418e36f268b0029",
  "deployedBytecode": "0x6080604052600436106101035763ffffffff60e060020a6000350416633764a7cd811461010857806341e4422f1461014e57806345608dd11461028857806346c3cf9c146103be5780635000596b1461047a578063547153901461048f5780637ccb6a64146106d45780638da5cb5b1461078557806393fa656e1461079a5780639d79916c146107c1578063a3474265146108f7578063af640d0f146109a8578063bdcf5b8e14610a32578063c918ef3814610c74578063c97782c314610daa578063cf09e0d014610dd4578063d5f3948814610de9578063e0876aa814610dfe578063e2b4cf4c14610eaf578063e71e657614610ec4578063f9b5333514610f80575b600080fd5b34801561011457600080fd5b506101326004803603602081101561012b57600080fd5b5035610f95565b60408051600160a060020a039092168252519081900360200190f35b34801561015a57600080fd5b506102866004803603606081101561017157600080fd5b810190602081018135602060020a81111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111602060020a831117156101be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561021057600080fd5b82018360208201111561022257600080fd5b803590602001918460018302840111602060020a8311171561024357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611049915050565b005b34801561029457600080fd5b50610286600480360360408110156102ab57600080fd5b810190602081018135602060020a8111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111602060020a831117156102f857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561034a57600080fd5b82018360208201111561035c57600080fd5b803590602001918460018302840111602060020a8311171561037d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061123f945050505050565b3480156103ca57600080fd5b50610286600480360360408110156103e157600080fd5b810190602081018135602060020a8111156103fb57600080fd5b82018360208201111561040d57600080fd5b803590602001918460018302840111602060020a8311171561042e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506113919050565b34801561048657600080fd5b5061013261145d565b34801561049b57600080fd5b50610286600480360360c08110156104b257600080fd5b810190602081018135602060020a8111156104cc57600080fd5b8201836020820111156104de57600080fd5b803590602001918460018302840111602060020a831117156104ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561055157600080fd5b82018360208201111561056357600080fd5b803590602001918460018302840111602060020a8311171561058457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156105d657600080fd5b8201836020820111156105e857600080fd5b803590602001918460018302840111602060020a8311171561060957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460018302840111602060020a8311171561068e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561146c565b3480156106e057600080fd5b50610132600480360360208110156106f757600080fd5b810190602081018135602060020a81111561071157600080fd5b82018360208201111561072357600080fd5b803590602001918460018302840111602060020a8311171561074457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611687945050505050565b34801561079157600080fd5b5061013261170f565b3480156107a657600080fd5b506107af61171e565b60408051918252519081900360200190f35b3480156107cd57600080fd5b50610286600480360360408110156107e457600080fd5b810190602081018135602060020a8111156107fe57600080fd5b82018360208201111561081057600080fd5b803590602001918460018302840111602060020a8311171561083157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561088357600080fd5b82018360208201111561089557600080fd5b803590602001918460018302840111602060020a831117156108b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611725945050505050565b34801561090357600080fd5b506101326004803603602081101561091a57600080fd5b810190602081018135602060020a81111561093457600080fd5b82018360208201111561094657600080fd5b803590602001918460018302840111602060020a8311171561096757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117f5945050505050565b3480156109b457600080fd5b506109bd611828565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109f75781810151838201526020016109df565b50505050905090810190601f168015610a245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a3e57600080fd5b50610286600480360360a0811015610a5557600080fd5b810190602081018135602060020a811115610a6f57600080fd5b820183602082011115610a8157600080fd5b803590602001918460018302840111602060020a83111715610aa257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460018302840111602060020a83111715610b2757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610b7957600080fd5b820183602082011115610b8b57600080fd5b803590602001918460018302840111602060020a83111715610bac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610bfe57600080fd5b820183602082011115610c1057600080fd5b803590602001918460018302840111602060020a83111715610c3157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506118b6915050565b348015610c8057600080fd5b5061013260048036036040811015610c9757600080fd5b810190602081018135602060020a811115610cb157600080fd5b820183602082011115610cc357600080fd5b803590602001918460018302840111602060020a83111715610ce457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610d3657600080fd5b820183602082011115610d4857600080fd5b803590602001918460018302840111602060020a83111715610d6957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ac8945050505050565b348015610db657600080fd5b506109bd60048036036020811015610dcd57600080fd5b5035611c3b565b348015610de057600080fd5b506107af611caf565b348015610df557600080fd5b50610132611cb5565b348015610e0a57600080fd5b5061013260048036036020811015610e2157600080fd5b810190602081018135602060020a811115610e3b57600080fd5b820183602082011115610e4d57600080fd5b803590602001918460018302840111602060020a83111715610e6e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cc4945050505050565b348015610ebb57600080fd5b50610286611dc4565b348015610ed057600080fd5b5061028660048036036040811015610ee757600080fd5b810190602081018135602060020a811115610f0157600080fd5b820183602082011115610f1357600080fd5b803590602001918460018302840111602060020a83111715610f3457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a03169150611e989050565b348015610f8c57600080fd5b506101326120de565b600d5460009060001901821115610fae57506000611044565b600f600d83815481101515610fbf57fe5b9060005260206000200160405180828054600181600116156101000203166002900480156110245780601f10611002576101008083540402835291820191611024565b820191906000526020600020905b815481529060010190602001808311611010575b5050928352505060405190819003602001902054600160a060020a031690505b919050565b600954600160a060020a031632146110ad576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b60006110b8846120ed565b6040805160e060020a6238a5b50281526024810185905260048101918252855160448201528551929350600160a060020a038416926238a5b59287928792829160640190602086019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b5050600d80546001810180835560009290925287519193506111ca92507fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501906020880190612847565b5050611239604080519081016040528060128152602001607060020a71646f63756d656e742d6e6f74696669657273028152506040805190810160405280601981526020017f646f63756d656e742e636f6e74726163742e6372656174656400000000000000815250836124d2565b50505050565b600b54600160a060020a031633146112bb576040805160e560020a62461bcd02815260206004820152602e60248201527f4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f6044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60006112c6836120ed565b60405160e060020a630b4f3f3d028152602060048201818152855160248401528551939450600160a060020a03851693630b4f3f3d93879383926044909201919085019080838360005b83811015611328578181015183820152602001611310565b50505050905090810190601f1680156113555780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b15801561137457600080fd5b505af1158015611388573d6000803e3d6000fd5b50505050505050565b600954600160a060020a031632146113f5576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611400836120ed565b905080600160a060020a03166313af4035836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561137457600080fd5b601154600160a060020a031681565b600954600160a060020a031632146114d0576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b60006114db876120ed565b905080600160a060020a0316636bee1e1b87878787876040518663ffffffff1660e060020a02815260040180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b8381101561155457818101518382015260200161153c565b50505050905090810190601f1680156115815780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156115b457818101518382015260200161159c565b50505050905090810190601f1680156115e15780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156116145781810151838201526020016115fc565b50505050905090810190601f1680156116415780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561166657600080fd5b505af115801561167a573d6000803e3d6000fd5b5050505050505050505050565b60006116928261272e565b15156116a057506000611044565b600f826040518082805190602001908083835b602083106116d25780518252601f1990920191602091820191016116b3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b600b54600160a060020a031681565b600d545b90565b600954600160a060020a03163214611789576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611794836120ed565b60405160e660020a6302abdb1d028152602060048201818152855160248401528551939450600160a060020a0385169363aaf6c740938793839260449092019190850190808383600083811015611328578181015183820152602001611310565b6000601082604051808280519060200190808383602083106116d25780518252601f1990920191602091820191016116b3565b600c805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156118ae5780601f10611883576101008083540402835291602001916118ae565b820191906000526020600020905b81548152906001019060200180831161189157829003601f168201915b505050505081565b600954600160a060020a0316321461191a576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b6000611925866120ed565b905080600160a060020a031663de4cd842868686866040518563ffffffff1660e060020a02815260040180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b8381101561199757818101518382015260200161197f565b50505050905090810190601f1680156119c45780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156119f75781810151838201526020016119df565b50505050905090810190601f168015611a245780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611a57578181015183820152602001611a3f565b50505050905090810190601f168015611a845780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b50505050505050505050565b6000611ad38361272e565b1515611ae157506000611c35565b6000600f846040518082805190602001908083835b60208310611b155780518252601f199092019160209182019101611af6565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184205460e060020a63e190206302855260048501828152885160248701528851600160a060020a039092169563e19020639550899450909283926044909201919085019080838360005b83811015611ba0578181015183820152602001611b88565b50505050905090810190601f168015611bcd5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d6020811015611c1457600080fd5b50519050600160a060020a0381161515611c32576000915050611c35565b90505b92915050565b600d805482908110611c4957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156118ae5780601f10611883576101008083540402835291602001916118ae565b600e5481565b600a54600160a060020a031681565b6000611ccf8261272e565b1515611cdd57506000611044565b6000600f836040518082805190602001908083835b60208310611d115780518252601f199092019160209182019101611cf2565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185205460e060020a638525855d0286529051600160a060020a0390911694638525855d94506004808201945090829003018186803b158015611d7c57600080fd5b505afa158015611d90573d6000803e3d6000fd5b505050506040513d6020811015611da657600080fd5b50519050600160a060020a0381161515611c35576000915050611044565b600954600160a060020a03163214611e28576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b611e96604080519081016040528060138152602001606860020a727369676e61747572652d6e6f74696669657273028152506040805190810160405280601a81526020017f7369676e61747572652e636f6e74726163742e63726561746564000000000000815250306124d2565b565b600954600160a060020a03163214611efc576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061290083398151915260448201526000805160206128e0833981519152606482015290519081900360840190fd5b611f3a6040805190810160405280601681526020017f7061796d656e745f636c617573652e63726561746564000000000000000000008152506127ae565b611f43836127ae565b1415611fec57604080518082018252600780825260ca60020a661c185e5b595b9d026020830190815292518493601093928291908083835b60208310611f9a5780518252601f199092019160209182019101611f7b565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092208054600160a060020a031916600160a060020a039490941693909317909255506120da9050565b61202a6040805190810160405280601981526020017f74696d656c6f676765725f636c617573652e63726561746564000000000000008152506127ae565b612033836127ae565b14156120da57604080518082018252600a80825260b160020a693a34b6b2b637b3b3b2b9026020830190815292518493601093928291908083835b6020831061208d5780518252601f19909201916020918201910161206e565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092208054600160a060020a031916600160a060020a03949094169390931790925550505b5050565b600954600160a060020a031681565b60006120f88261272e565b1561216e57600f826040518082805190602001908083835b6020831061212f5780518252601f199092019160209182019101612110565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169250611044915050565b600a5460408051600160a060020a03909216604483018190526024830191825284516064840152845160009360609387928492829160849091019060208601908083838c5b838110156121cb5781810151838201526020016121b3565b50505050905090810190601f1680156121f85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e260020a63226ddea10217815290518251929650945084935091508083835b602083106122575780518252601f199092019160209182019101612238565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146122b7576040519150601f19603f3d011682016040523d82523d6000602084013e6122bc565b606091505b5091509150811515612318576040805160e560020a62461bcd02815260206004820152601e60248201527f4572726f72207768696c65206465706c6f79696e6720646f63756d656e740000604482015290519081900360640190fd5b61232181612840565b600f856040518082805190602001908083835b602083106123535780518252601f199092019160209182019101612334565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810184208054600160a060020a031916600160a060020a03969096169590951790945550508551600f9287929182918401908083835b602083106123cf5780518252601f1990920191602091820191016123b0565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900390910184205460115460e060020a63acf635b9028652600160a060020a039081166004870152915191169363acf635b99350602480820193506000929182900301818387803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50505050600f846040518082805190602001908083835b602083106124935780518252601f199092019160209182019101612474565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169695505050505050565b6000805b6011546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b83811015612540578181015183820152602001612528565b50505050905090810190601f16801561256d5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561258b57600080fd5b505afa15801561259f573d6000803e3d6000fd5b505050506040513d60208110156125b557600080fd5b50519150600101600160a060020a038216156127175760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b83811015612620578181015183820152602001612608565b50505050905090810190601f16801561264d5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106126ac5780518252601f19909201916020918201910161268d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461270e576040519150601f19603f3d011682016040523d82523d6000602084013e612713565b606091505b5050505b600160a060020a03821615156124d6575050505050565b600080600160a060020a0316600f836040518082805190602001908083835b6020831061276c5780518252601f19909201916020918201910161274d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169290921415949350505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156127f15781810151838201526020016127d9565b50505050905090810190601f16801561281e5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001209050919050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061288857805160ff19168380011785556128b5565b828001600101855582156128b5579182015b828111156128b557825182559160200191906001019061289a565b506128c19291506128c5565b5090565b61172291905b808211156128c157600081556001016128cb56fe6f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79205369676e617475726974206163636f756e742063616e2070657266a165627a7a723058207f1f174d281b5224201987cec8a86bb71fc4d10ef306fe78fbd72418e36f268b0029",
  "sourceMap": "412:7838:14:-;;;1420:449;8:9:-1;5:2;;;30:1;27;20:12;5:2;1420:449:14;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1420:449:14;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;1420:449:14;;;;;;;;;;;;;;;;;;1629:10;:23;;1642:10;-1:-1:-1;;;;;;1629:23:14;;;;;;;1662:8;:26;;;;-1:-1:-1;;;;;1662:26:14;;;;;;;;;;1699:5;:22;;;;;;;;;;1731:12;:64;;;;;;;;;;;1806:16;;;;-1:-1:-1;1420:449:14;;-1:-1:-1;1420:449:14;;;;1806:16;;:2;;:16;;;;:::i;:::-;-1:-1:-1;;;1832:9:14;:30;-1:-1:-1;412:7838:14;;-1:-1:-1;412:7838:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;412:7838:14;;;-1:-1:-1;412:7838:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "412:7838:14:-;;;;;;;;;-1:-1:-1;;;412:7838:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5349:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5349:238:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5349:238:14;;;;;;;-1:-1:-1;;;;;5349:238:14;;;;;;;;;;;;;;2761:438;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2761:438:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2761:438:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2761:438:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2761:438:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2761:438:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2761:438:14;;;;;;;;-1:-1:-1;2761:438:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2761:438:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2761:438:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2761:438:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2761:438:14;;-1:-1:-1;;2761:438:14;;;-1:-1:-1;2761:438:14;;-1:-1:-1;;2761:438:14;;;3735:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3735:248:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3735:248:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3735:248:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3735:248:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3735:248:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3735:248:14;;;;;;;;-1:-1:-1;3735:248:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3735:248:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3735:248:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3735:248:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3735:248:14;;-1:-1:-1;3735:248:14;;-1:-1:-1;;;;;3735:248:14;3205:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3205:253:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3205:253:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3205:253:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3205:253:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3205:253:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3205:253:14;;-1:-1:-1;;;3205:253:14;;-1:-1:-1;;;;;3205:253:14;;-1:-1:-1;3205:253:14;;-1:-1:-1;3205:253:14;1370:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1370:43:14;;;;3989:483;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3989:483:14;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3989:483:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3989:483:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3989:483:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3989:483:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3989:483:14;;;;;;;;-1:-1:-1;3989:483:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3989:483:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3989:483:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3989:483:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3989:483:14;;;;;;;;-1:-1:-1;3989:483:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3989:483:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3989:483:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3989:483:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3989:483:14;;;;;;;;-1:-1:-1;3989:483:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3989:483:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3989:483:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3989:483:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3989:483:14;;-1:-1:-1;;3989:483:14;;;-1:-1:-1;;;3989:483:14;;;;;5109:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5109:234:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5109:234:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5109:234:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5109:234:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5109:234:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5109:234:14;;-1:-1:-1;5109:234:14;;-1:-1:-1;;;;;5109:234:14;1149:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1149:20:14;;;;5593:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5593:125:14;;;;;;;;;;;;;;;;;;;;3464:265;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3464:265:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3464:265:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3464:265:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3464:265:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3464:265:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3464:265:14;;;;;;;;-1:-1:-1;3464:265:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3464:265:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3464:265:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3464:265:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3464:265:14;;-1:-1:-1;3464:265:14;;-1:-1:-1;;;;;3464:265:14;4929:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4929:174:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4929:174:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4929:174:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4929:174:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4929:174:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4929:174:14;;-1:-1:-1;4929:174:14;;-1:-1:-1;;;;;4929:174:14;1176:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:16:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1176:16:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4478:445;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4478:445:14;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4478:445:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4478:445:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4478:445:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4478:445:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4478:445:14;;;;;;;;-1:-1:-1;4478:445:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4478:445:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4478:445:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4478:445:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4478:445:14;;;;;;;;-1:-1:-1;4478:445:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4478:445:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4478:445:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4478:445:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4478:445:14;;;;;;;;-1:-1:-1;4478:445:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4478:445:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4478:445:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4478:445:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4478:445:14;;-1:-1:-1;;4478:445:14;;;-1:-1:-1;4478:445:14;;-1:-1:-1;;4478:445:14;6091:446;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6091:446:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6091:446:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6091:446:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6091:446:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6091:446:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6091:446:14;;;;;;;;-1:-1:-1;6091:446:14;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6091:446:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6091:446:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6091:446:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6091:446:14;;-1:-1:-1;6091:446:14;;-1:-1:-1;;;;;6091:446:14;1199:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1199:27:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1199:27:14;;;1233:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1233:20:14;;;;1120:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1120:23:14;;;;5724:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5724:361:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5724:361:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5724:361:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5724:361:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5724:361:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5724:361:14;;-1:-1:-1;5724:361:14;;-1:-1:-1;;;;;5724:361:14;2587:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2587:168:14;;;;2221:360;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2221:360:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2221:360:14;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2221:360:14;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2221:360:14;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2221:360:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2221:360:14;;-1:-1:-1;;;2221:360:14;;-1:-1:-1;;;;;2221:360:14;;-1:-1:-1;2221:360:14;;-1:-1:-1;2221:360:14;1089:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:25:14;;;;5349:238;5483:11;:18;5448:7;;-1:-1:-1;;5483:22:14;5475:30;;5471:53;;;-1:-1:-1;5522:1:14;5507:17;;5471:53;5550:9;5560:11;5572:5;5560:18;;;;;;;;;;;;;;;;;5550:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5550:29:14;;;-1:-1:-1;;5550:29:14;;;;;;;;;;;-1:-1:-1;;;;;5550:29:14;;-1:-1:-1;5349:238:14;;;;:::o;2761:438::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;2946:26;2975:24;2988:10;2975:12;:24::i;:::-;3010:47;;;-1:-1:-1;;;;;3010:47:14;;;;;;;;;;;;;;;;;;;;;;2946:53;;-1:-1:-1;;;;;;3010:13:14;;;;;3024;;3039:17;;3010:47;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3010:47:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3010:47:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3068:11:14;27:10:-1;;39:1;23:18;;45:23;;;-1:-1;3068:28:14;;;;;;23:18:-1;;-1:-1;3068:28:14;;-1:-1:-1;3068:28:14;;;;;;;;:::i;:::-;;;3107:85;3126:22;;;;;;;;;;;;;;-1:-1:-1;;;;;3126:22:14;;;3150;;;;;;;;;;;;;;;;;;3182:8;3107:18;:85::i;:::-;2039:1;2761:438;;;:::o;3735:248::-;2119:5;;-1:-1:-1;;;;;2119:5:14;2105:10;:19;2084:112;;;;;-1:-1:-1;;;;;2084:112:14;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2084:112:14;;;;;;;;;;;;;;;3883:26;3912:24;3925:10;3912:12;:24::i;:::-;3947:29;;-1:-1:-1;;;;;3947:29:14;;;;;;;;;;;;;;;;;3883:53;;-1:-1:-1;;;;;;3947:15:14;;;;;3963:12;;3947:29;;;;;;;;;;;;;;;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;3947:29:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3947:29:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3947:29:14;;;;2207:1;3735:248;;:::o;3205:253::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;3355:26;3384:24;3397:10;3384:12;:24::i;:::-;3355:53;;3419:8;-1:-1:-1;;;;;3419:17:14;;3437:13;3419:32;;;;;-1:-1:-1;;;3419:32:14;;;;;;;-1:-1:-1;;;;;3419:32:14;-1:-1:-1;;;;;3419:32:14;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1370:43:14;;;-1:-1:-1;;;;;1370:43:14;;:::o;3989:483::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;4246:26;4275:24;4288:10;4275:12;:24::i;:::-;4246:53;;4310:8;-1:-1:-1;;;;;4310:32:14;;4356:6;4376:8;4398;4420:13;4447:8;4310:155;;;;;-1:-1:-1;;;4310:155:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4310:155:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4310:155:14;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4310:155:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4310:155:14;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4310:155:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4310:155:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4310:155:14;;;;2039:1;3989:483;;;;;;:::o;5109:234::-;5215:7;5243:26;5258:10;5243:14;:26::i;:::-;5242:27;5238:50;;;-1:-1:-1;5286:1:14;5271:17;;5238:50;5314:9;5324:10;5314:21;;;;;;;;;;;;;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;;5314:21:14;;;;;-1:-1:-1;5314:21:14;;;;;;;;;;;-1:-1:-1;;;;;5314:21:14;;5109:234;-1:-1:-1;;;;5109:234:14:o;1149:20::-;;;-1:-1:-1;;;;;1149:20:14;;:::o;5593:125::-;5693:11;:18;5593:125;;:::o;3464:265::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;3622:26;3651:24;3664:10;3651:12;:24::i;:::-;3686:36;;-1:-1:-1;;;;;3686:36:14;;;;;;;;;;;;;;;;;3622:53;;-1:-1:-1;;;;;;3686:20:14;;;;;3707:14;;3686:36;;;;;;;;;;;;;;;33:3:-1;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4929:174:14;5033:21;5077:7;5085:10;5077:19;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;1176:16:14;;;;;;;;;;;;;;;-1:-1:-1;;1176:16:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4478:445::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;4722:26;4751:24;4764:10;4751:12;:24::i;:::-;4722:53;;4786:8;-1:-1:-1;;;;;4786:20:14;;4820:7;4841:9;4864:14;4892;4786:130;;;;;-1:-1:-1;;;4786:130:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4786:130:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4786:130:14;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4786:130:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4786:130:14;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4786:130:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4786:130:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4786:130:14;;;;2039:1;4478:445;;;;;:::o;6091:446::-;6225:7;6253:26;6268:10;6253:14;:26::i;:::-;6252:27;6248:50;;;-1:-1:-1;6296:1:14;6281:17;;6248:50;6309:29;6356:9;6366:10;6356:21;;;;;;;;;;;;;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;;6356:21:14;;;;;-1:-1:-1;6356:21:14;;;;;;;;;;;-1:-1:-1;;;;;6356:61:14;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6356:21:14;;;;:30;;-1:-1:-1;6356:61:14;;-1:-1:-1;6356:61:14;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6356:61:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6356:61:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6356:61:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6356:61:14;;-1:-1:-1;;;;;;6433:37:14;;;6429:60;;;6487:1;6472:17;;;;;6429:60;6515:14;-1:-1:-1;6091:446:14;;;;;:::o;1199:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1199:27:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:27:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1233:20;;;;:::o;1120:23::-;;;-1:-1:-1;;;;;1120:23:14;;:::o;5724:361::-;5826:7;5854:26;5869:10;5854:14;:26::i;:::-;5853:27;5849:50;;;-1:-1:-1;5897:1:14;5882:17;;5849:50;5910:27;5940:9;5950:10;5940:21;;;;;;;;;;;;;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;;5940:21:14;;;;;-1:-1:-1;5940:21:14;;;;;;;;;;;;-1:-1:-1;;;;;5940:28:14;;;;-1:-1:-1;;;;;5940:21:14;;;;:26;;-1:-1:-1;5940:28:14;;;;;-1:-1:-1;5940:28:14;;;;;;:21;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;5940:28:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5940:28:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5940:28:14;;-1:-1:-1;;;;;;5983:36:14;;;5979:59;;;6036:1;6021:17;;;;;2587:168;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;2665:83;2684:23;;;;;;;;;;;;;;-1:-1:-1;;;;;2684:23:14;;;2709;;;;;;;;;;;;;;;;;;2742:4;2665:18;:83::i;:::-;2587:168::o;2221:360::-;1945:10;;-1:-1:-1;;;;;1945:10:14;1932:9;:23;1911:117;;;;;-1:-1:-1;;;;;1911:117:14;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;-1:-1:-1;;;;;;;;;;;1911:117:14;;;;;;;;;;;;;;;2380:36;2393:22;;;;;;;;;;;;;;;;;;2380:12;:36::i;:::-;2353:23;2366:9;2353:12;:23::i;:::-;:63;2349:225;;;2426:18;;;;;;;;;;;;-1:-1:-1;;;;;2426:18:14;;;;;;2418:27;;2448:3;;2418:7;;2426:18;2418:27;;2426:18;;2418:27;2426:18;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;;2418:27:14;;;;;-1:-1:-1;2418:27:14;;;;;;;;;;:33;;-1:-1:-1;;;;;;2418:33:14;-1:-1:-1;;;;;2418:33:14;;;;;;;;;;;-1:-1:-1;2349:225:14;;-1:-1:-1;2349:225:14;;2497:39;2510:25;;;;;;;;;;;;;;;;;;2497:12;:39::i;:::-;2470:23;2483:9;2470:12;:23::i;:::-;:66;2466:108;;;2546:21;;;;;;;;;;;;-1:-1:-1;;;;;2546:21:14;;;;;;2538:30;;2571:3;;2538:7;;2546:21;2538:30;;2546:21;;2538:30;2546:21;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;;2538:30:14;;;;;-1:-1:-1;2538:30:14;;;;;;;;;;:36;;-1:-1:-1;;;;;;2538:36:14;-1:-1:-1;;;;;2538:36:14;;;;;;;;;;;-1:-1:-1;;2466:108:14;2221:360;;:::o;1089:25::-;;;-1:-1:-1;;;;;1089:25:14;;:::o;7296:758::-;7391:17;7428:26;7443:10;7428:14;:26::i;:::-;7424:72;;;7475:9;7485:10;7475:21;;;;;;;;;;;;;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;;7475:21:14;;;;;-1:-1:-1;7475:21:14;;;;;;;;;;;-1:-1:-1;;;;;7475:21:14;;-1:-1:-1;7468:28:14;;-1:-1:-1;;7468:28:14;7424:72;7583:8;;7618:103;;;-1:-1:-1;;;;;7583:8:14;;;7618:103;;;;;;;;;;;;;;;;;;;;7521:12;;7547:23;;7688:10;;7583:8;;7618:103;;;;;;;;;;;;;;7521:12;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;7618:103:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7618:103:14;;;-1:-1:-1;;26:21;;;22:32;6:49;;7618:103:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;7583:148:14;;;;7618:103;;-1:-1:-1;7583:148:14;-1:-1:-1;7583:148:14;;-1:-1:-1;25:18;-1:-1;7583:148:14;;25:18:-1;36:153;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;;;7583:148:14;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7507:224:14;;;;7763:7;7742:84;;;;;;;-1:-1:-1;;;;;7742:84:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;7892:33;7914:10;7892:21;:33::i;:::-;7837:9;7847:10;7837:21;;;;;;;;;;;;;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;;7837:21:14;;;;;-1:-1:-1;7837:21:14;;;;;;;;;;:98;;-1:-1:-1;;;;;;7837:98:14;-1:-1:-1;;;;;7837:98:14;;;;;;;;;;;-1:-1:-1;;7946:21:14;;:9;;:21;;7837;;;7946;;;;7837;7946;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;;7946:21:14;;;;;-1:-1:-1;7946:21:14;;;;;;;;;;;;;7994:12;;-1:-1:-1;;;;;7946:62:14;;-1:-1:-1;;;;;7994:12:14;;;7946:62;;;;;;:21;;;:39;;-1:-1:-1;7946:62:14;;;;;-1:-1:-1;;;7946:62:14;;;;;;-1:-1:-1;7946:21:14;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;7946:62:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7946:62:14;;;;8026:9;8036:10;8026:21;;;;;;;;;;;;;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;;8026:21:14;;;;;-1:-1:-1;8026:21:14;;;;;;;;;;;-1:-1:-1;;;;;8026:21:14;;7296:758;-1:-1:-1;;;;;;7296:758:14:o;6543:747::-;6709:24;;6780:504;6816:12;;:70;;;-1:-1:-1;;;;;6816:70:14;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6816:12:14;;;;:37;;6854:12;;6868:17;;6816:70;;;;;;;;;;;;:12;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;6816:70:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6816:70:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6816:70:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6816:70:14;;-1:-1:-1;6900:19:14;;-1:-1:-1;;;;;6938:30:14;;;6934:300;;7031:170;;;-1:-1:-1;;;;;7031:170:14;;;;;;;;;;;;;;;;;;;;;6988:21;;;;7130:12;;7168:11;;7031:170;;;;;;;;;;;;;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;7031:170:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7031:170:14;;;-1:-1:-1;;26:21;;;22:32;6:49;;7031:170:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;6988:231:14;;;;7031:170;;-1:-1:-1;6988:231:14;-1:-1:-1;6988:231:14;;-1:-1:-1;25:18;-1:-1;6988:231:14;;25:18:-1;36:153;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;;;6988:231:14;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6988:231:14;;6934:300;-1:-1:-1;;;;;7252:30:14;;;;6780:504;;6543:747;;;;;:::o;8060:188::-;8170:4;8239:1;-1:-1:-1;;;;;8197:44:14;8205:9;8215:10;8205:21;;;;;;;;;;;;;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;;8205:21:14;;;;;-1:-1:-1;8205:21:14;;;;;;;;;;;-1:-1:-1;;;;;8205:21:14;8197:44;;;;;;8060:188;-1:-1:-1;;;;8060:188:14:o;342:182:31:-;439:7;503:3;492:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;492:15:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;492:15:31;;;469:48;;;;;;462:55;;342:182;;;:::o;46:290::-;259:4;247:17;241:24;;46:290::o;412:7838:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;412:7838:14;;;-1:-1:-1;412:7838:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 3.329.557\n*/\n\nimport \"./interfaces/SignatureInterface.sol\";\nimport \"./interfaces/NotifierInterface.sol\";\nimport \"./interfaces/DocumentInterface.sol\";\nimport \"./interfaces/SignaturitUserInterface.sol\";\nimport \"./interfaces/FileInterface.sol\";\nimport \"./interfaces/EventInterface.sol\";\nimport \"./interfaces/SignaturitUserInterface.sol\";\nimport \"./libraries/Utils.sol\";\n\n\ncontract Signature is SignatureInterface, NotifierInterface {\n    string constant private SIGNATURE_CREATED_EVENT = \"signature.contract.created\";\n    string constant private DOCUMENT_CREATED_EVENT = \"document.contract.created\";\n\n    string constant private SIGNATURE_NOTIFIERS_KEY = \"signature-notifiers\";\n    string constant private DOCUMENT_NOTIFIERS_KEY = \"document-notifiers\";\n\n    string constant private PAYMENT_CLAUSE_CREATED = \"payment_clause.created\";\n    string constant private TIMELOGGER_CLAUSE_CREATED = \"timelogger_clause.created\";\n    string constant private PAYMENT_CLAUSE_KEY = \"payment\";\n    string constant private TIMELOGGER_CLAUSE_KEY = \"timelogger\";\n\n    address public signaturit;\n    address public deployer;\n    address public owner;\n\n    string public id;\n\n    string[] public documentsId;\n\n    int public createdAt;\n\n    mapping(string => DocumentInterface) private documents;\n\n    mapping(string => address) private clauses;\n\n    SignaturitUserInterface public userContract;\n\n    constructor(\n        string memory signatureId,\n        address deployerAddress,\n        int signatureCreatedAt,\n        address signatureOwner,\n        address userSmartContractAddress\n    ) public {\n        signaturit = msg.sender;\n        deployer = deployerAddress;\n\n        owner = signatureOwner;\n        userContract = SignaturitUserInterface(userSmartContractAddress);\n\n        id = signatureId;\n        createdAt = signatureCreatedAt;\n    }\n\n    modifier signaturitOnly() {\n        require(\n            tx.origin == signaturit,\n            \"Only Signaturit account can perform this action\"\n        );\n\n        _;\n    }\n\n    modifier ownerOnly() {\n        require(\n            msg.sender == owner,\n            \"Only the owner account can perform this action\"\n        );\n\n        _;\n    }\n\n    function notify(\n        string memory attribute,\n        address adr\n    )\n        public\n        signaturitOnly\n    {\n        if (Utils.keccak(attribute) == Utils.keccak(PAYMENT_CLAUSE_CREATED)) clauses[PAYMENT_CLAUSE_KEY] = adr;\n        else if (Utils.keccak(attribute) == Utils.keccak(TIMELOGGER_CLAUSE_CREATED)) clauses[TIMELOGGER_CLAUSE_KEY] = adr;\n    }\n\n    function notifyCreation()\n        public\n        signaturitOnly\n    {\n        _notifyEntityEvent(SIGNATURE_NOTIFIERS_KEY, SIGNATURE_CREATED_EVENT, address(this));\n    }\n\n    function createDocument(\n        string memory documentId,\n        string memory signatureType,\n        uint documentCreatedAt\n    )\n        public\n        signaturitOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.init(signatureType, documentCreatedAt);\n\n        documentsId.push(documentId);\n\n        _notifyEntityEvent(DOCUMENT_NOTIFIERS_KEY, DOCUMENT_CREATED_EVENT, address(document));\n    }\n\n    function setDocumentOwner (\n        string memory documentId,\n        address documentOwner\n    )\n        public\n        signaturitOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.setOwner(documentOwner);\n    }\n\n    function setSignedFileHash (\n        string memory documentId,\n        string memory signedFileHash\n    )\n        public\n        signaturitOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.setFileHash(signedFileHash);\n    }\n\n    function cancelDocument (\n        string memory documentId,\n        string memory cancelReason\n    )\n        public\n        ownerOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.cancel(cancelReason);\n    }\n\n    function createFile(\n        string memory documentId,\n        string memory fileId,\n        string memory fileName,\n        string memory fileHash,\n        uint fileCreatedAt,\n        uint fileSize\n    )\n        public\n        signaturitOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.\n            createFile(\n            fileId,\n            fileName,\n            fileHash,\n            fileCreatedAt,\n            fileSize\n        );\n    }\n\n    function createEvent(\n        string memory documentId,\n        string memory eventId,\n        string memory eventType,\n        string memory eventUserAgent,\n        uint eventCreatedAt\n    )\n        public\n        signaturitOnly\n    {\n        DocumentInterface document = _getDocument(documentId);\n\n        document.createEvent(\n            eventId,\n            eventType,\n            eventUserAgent,\n            eventCreatedAt\n        );\n    }\n\n    function getClause(\n        string memory clauseType\n    )\n        public\n        view\n        returns (address clauseAddress)\n    {\n        return clauses[clauseType];\n    }\n\n    function getDocument(\n        string memory documentId\n    )\n        public\n        view\n        returns (address)\n    {\n        if (!_documentExist(documentId)) return address(0);\n\n        return address(documents[documentId]);\n    }\n\n    function getDocumentByIndex(\n        uint index\n    )\n        public\n        view\n        returns (address)\n    {\n        if (index > documentsId.length - 1) return address(0);\n\n        return address(documents[documentsId[index]]);\n    }\n\n    function getDocumentsSize()\n        public\n        view\n        returns (uint)\n    {\n        return documentsId.length;\n    }\n\n    function getFile(\n        string memory documentId\n    )\n        public\n        view\n        returns (address)\n    {\n        if (!_documentExist(documentId)) return address(0);\n\n        FileInterface signatureFile = documents[documentId].file();\n\n        if (address(signatureFile) == address(0)) return address(0);\n\n        return address(signatureFile);\n    }\n\n    function getEvent(\n        string memory documentId,\n        string memory eventId\n    )\n        public\n        view\n        returns (address)\n    {\n        if (!_documentExist(documentId)) return address(0);\n\n        EventInterface signatureEvent = EventInterface(documents[documentId].getEvent(\n            eventId\n        ));\n\n        if (address(signatureEvent) == address(0)) return address(0);\n\n        return address(signatureEvent);\n    }\n\n    function _notifyEntityEvent (\n        string memory notifiersKey,\n        string memory createdEvent,\n        address adrToNotify\n    )\n        private\n    {\n        address contractToNofify;\n        uint notificationIndex = 0;\n\n        do {\n            contractToNofify = userContract.getAddressArrayAttribute(notifiersKey, notificationIndex);\n            ++notificationIndex;\n\n            if (contractToNofify != address(0)) {\n                contractToNofify.call(\n                    abi.encodeWithSignature(\n                        \"notify(string,address)\",\n                        createdEvent,\n                        adrToNotify\n                    )\n                );\n            }\n        } while (contractToNofify != address(0));\n    }\n\n    function _getDocument(\n        string memory documentId\n    )\n        private\n        returns (DocumentInterface)\n    {\n        if (_documentExist(documentId))\n            return documents[documentId];\n\n        (\n            bool success,\n            bytes memory returnData\n        ) = deployer.delegatecall(\n            abi.encodeWithSignature(\"deployDocument(string,address)\",\n            documentId,\n            deployer)\n        );\n\n        require(\n            success,\n            \"Error while deploying document\"\n        );\n\n        documents[documentId] = DocumentInterface(\n            Utils._bytesToAddress(returnData)\n        );\n\n        documents[documentId].setSignatureOwner(address(userContract));\n\n        return documents[documentId];\n    }\n\n    function _documentExist(\n        string memory documentId\n    )\n        private\n        view\n        returns (bool)\n    {\n        return address(documents[documentId]) != address(0);\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Signature.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Signature.sol",
    "exportedSymbols": {
      "Signature": [
        3807
      ]
    },
    "id": 3808,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3168,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:14"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignatureInterface.sol",
        "file": "./interfaces/SignatureInterface.sol",
        "id": 3169,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7089,
        "src": "57:45:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/NotifierInterface.sol",
        "file": "./interfaces/NotifierInterface.sol",
        "id": 3170,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6928,
        "src": "103:44:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/DocumentInterface.sol",
        "file": "./interfaces/DocumentInterface.sol",
        "id": 3171,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6881,
        "src": "148:44:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 3172,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7252,
        "src": "193:50:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 3173,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6918,
        "src": "244:40:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 3174,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6892,
        "src": "285:41:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 3175,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7252,
        "src": "327:50:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 3176,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7290,
        "src": "378:31:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3177,
              "name": "SignatureInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7088,
              "src": "434:18:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignatureInterface_$7088",
                "typeString": "contract SignatureInterface"
              }
            },
            "id": 3178,
            "nodeType": "InheritanceSpecifier",
            "src": "434:18:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3179,
              "name": "NotifierInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6927,
              "src": "454:17:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                "typeString": "contract NotifierInterface"
              }
            },
            "id": 3180,
            "nodeType": "InheritanceSpecifier",
            "src": "454:17:14"
          }
        ],
        "contractDependencies": [
          6927,
          7088
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3807,
        "linearizedBaseContracts": [
          3807,
          6927,
          7088
        ],
        "name": "Signature",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 3183,
            "name": "SIGNATURE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "478:78:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3181,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "478:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7369676e61747572652e636f6e74726163742e63726561746564",
              "id": 3182,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "528:28:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3c84dd064979bbdb715484653bafe8622e8a568c4ab0aeaa9d5d3f68f5a44beb",
                "typeString": "literal_string \"signature.contract.created\""
              },
              "value": "signature.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3186,
            "name": "DOCUMENT_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "562:76:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3184,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "562:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e63726561746564",
              "id": 3185,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "611:27:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_cf7018f27b4f1c9203d649679ba3bf8e0acd989de189f14a3ecc0f834baee2ad",
                "typeString": "literal_string \"document.contract.created\""
              },
              "value": "document.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3189,
            "name": "SIGNATURE_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "645:71:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3187,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "645:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7369676e61747572652d6e6f74696669657273",
              "id": 3188,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "695:21:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3b317d4221d274688226013f55affecc0f5c09cf980dc6d9578c6a596721f3cf",
                "typeString": "literal_string \"signature-notifiers\""
              },
              "value": "signature-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3192,
            "name": "DOCUMENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "722:69:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3190,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "722:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742d6e6f74696669657273",
              "id": 3191,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "771:20:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7d28b4fa182b49d585cf0be720ed320f87b6af7199ef0f994429e1aa22d0664d",
                "typeString": "literal_string \"document-notifiers\""
              },
              "value": "document-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3195,
            "name": "PAYMENT_CLAUSE_CREATED",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "798:73:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3193,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "798:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636c617573652e63726561746564",
              "id": 3194,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "847:24:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8692ad01fe67ad9dfd2c7e5cd12c282c30db07c2d37128c1b7a41fe4639ff20d",
                "typeString": "literal_string \"payment_clause.created\""
              },
              "value": "payment_clause.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3198,
            "name": "TIMELOGGER_CLAUSE_CREATED",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "877:79:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3196,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "877:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74696d656c6f676765725f636c617573652e63726561746564",
              "id": 3197,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "929:27:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_56c229a2837880df25843d0a92e84866a9b9b9229785161f2a6bcb14b164de6f",
                "typeString": "literal_string \"timelogger_clause.created\""
              },
              "value": "timelogger_clause.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3201,
            "name": "PAYMENT_CLAUSE_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "962:54:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3199,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "962:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e74",
              "id": 3200,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1007:9:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_1fab0c92eaead7da02fe29795732249e0861c98d6738709e6be992a170920770",
                "typeString": "literal_string \"payment\""
              },
              "value": "payment"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3204,
            "name": "TIMELOGGER_CLAUSE_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1022:60:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3202,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1022:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74696d656c6f67676572",
              "id": 3203,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:12:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5b7ad07ae4f4e6c07380a7e94f37f18caf3eb1de0efed16e937b2fa49edef7af",
                "typeString": "literal_string \"timelogger\""
              },
              "value": "timelogger"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3206,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1089:25:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3205,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1089:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3208,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1120:23:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3207,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1120:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3210,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1149:20:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3209,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1149:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3212,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1176:16:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 3211,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1176:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3215,
            "name": "documentsId",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1199:27:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 3213,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1199:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 3214,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1199:8:14",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3217,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1233:20:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 3216,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "1233:3:14",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3221,
            "name": "documents",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1260:54:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
              "typeString": "mapping(string => contract DocumentInterface)"
            },
            "typeName": {
              "id": 3220,
              "keyType": {
                "id": 3218,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1268:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1260:36:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                "typeString": "mapping(string => contract DocumentInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3219,
                "name": "DocumentInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6880,
                "src": "1278:17:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                  "typeString": "contract DocumentInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3225,
            "name": "clauses",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1321:42:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
              "typeString": "mapping(string => address)"
            },
            "typeName": {
              "id": 3224,
              "keyType": {
                "id": 3222,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1329:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1321:26:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                "typeString": "mapping(string => address)"
              },
              "valueType": {
                "id": 3223,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1339:7:14",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3227,
            "name": "userContract",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1370:43:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 3226,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "1370:23:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3267,
              "nodeType": "Block",
              "src": "1619:250:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3240,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3206,
                      "src": "1629:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3241,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1642:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1642:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1629:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3244,
                  "nodeType": "ExpressionStatement",
                  "src": "1629:23:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3245,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3208,
                      "src": "1662:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3246,
                      "name": "deployerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3231,
                      "src": "1673:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1662:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3248,
                  "nodeType": "ExpressionStatement",
                  "src": "1662:26:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3249,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "1699:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3250,
                      "name": "signatureOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3235,
                      "src": "1707:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1699:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3252,
                  "nodeType": "ExpressionStatement",
                  "src": "1699:22:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3253,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3227,
                      "src": "1731:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3255,
                          "name": "userSmartContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3237,
                          "src": "1770:24:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3254,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1746:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 3256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1746:49:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1731:64:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 3258,
                  "nodeType": "ExpressionStatement",
                  "src": "1731:64:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3259,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3212,
                      "src": "1806:2:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3260,
                      "name": "signatureId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3229,
                      "src": "1811:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1806:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 3262,
                  "nodeType": "ExpressionStatement",
                  "src": "1806:16:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3263,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3217,
                      "src": "1832:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3264,
                      "name": "signatureCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3233,
                      "src": "1844:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1832:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 3266,
                  "nodeType": "ExpressionStatement",
                  "src": "1832:30:14"
                }
              ]
            },
            "documentation": null,
            "id": 3268,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3229,
                  "name": "signatureId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1441:25:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3228,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1441:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3231,
                  "name": "deployerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1476:23:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3230,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1476:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3233,
                  "name": "signatureCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1509:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3232,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1509:3:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3235,
                  "name": "signatureOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1541:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3237,
                  "name": "userSmartContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1573:32:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1573:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1431:180:14"
            },
            "returnParameters": {
              "id": 3239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1619:0:14"
            },
            "scope": 3807,
            "src": "1420:449:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3279,
              "nodeType": "Block",
              "src": "1901:146:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3271,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7316,
                            "src": "1932:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 3272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1932:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3273,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3206,
                          "src": "1945:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1932:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 3275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1969:49:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        },
                        "value": "Only Signaturit account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        }
                      ],
                      "id": 3270,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1911:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1911:117:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3277,
                  "nodeType": "ExpressionStatement",
                  "src": "1911:117:14"
                },
                {
                  "id": 3278,
                  "nodeType": "PlaceholderStatement",
                  "src": "2039:1:14"
                }
              ]
            },
            "documentation": null,
            "id": 3280,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3269,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1898:2:14"
            },
            "src": "1875:172:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3291,
              "nodeType": "Block",
              "src": "2074:141:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3283,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "2105:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2105:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3285,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3210,
                          "src": "2119:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2105:19:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 3287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2138:48:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        },
                        "value": "Only the owner account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        }
                      ],
                      "id": 3282,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2084:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2084:112:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3289,
                  "nodeType": "ExpressionStatement",
                  "src": "2084:112:14"
                },
                {
                  "id": 3290,
                  "nodeType": "PlaceholderStatement",
                  "src": "2207:1:14"
                }
              ]
            },
            "documentation": null,
            "id": 3292,
            "name": "ownerOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3281,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2071:2:14"
            },
            "src": "2053:162:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3333,
              "nodeType": "Block",
              "src": "2339:242:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3303,
                          "name": "attribute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3294,
                          "src": "2366:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3301,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "2353:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 3302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "2353:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 3304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2353:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3307,
                          "name": "PAYMENT_CLAUSE_CREATED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3195,
                          "src": "2393:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3305,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "2380:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 3306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "2380:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 3308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2380:36:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2353:63:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 3324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3318,
                            "name": "attribute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3294,
                            "src": "2483:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3316,
                            "name": "Utils",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7289,
                            "src": "2470:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                              "typeString": "type(library Utils)"
                            }
                          },
                          "id": 3317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keccak",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7288,
                          "src": "2470:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (string memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2470:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3322,
                            "name": "TIMELOGGER_CLAUSE_CREATED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "2510:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3320,
                            "name": "Utils",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7289,
                            "src": "2497:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                              "typeString": "type(library Utils)"
                            }
                          },
                          "id": 3321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keccak",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7288,
                          "src": "2497:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (string memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2497:39:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "2470:66:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3331,
                    "nodeType": "IfStatement",
                    "src": "2466:108:14",
                    "trueBody": {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3325,
                            "name": "clauses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3225,
                            "src": "2538:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                              "typeString": "mapping(string memory => address)"
                            }
                          },
                          "id": 3327,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3326,
                            "name": "TIMELOGGER_CLAUSE_KEY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3204,
                            "src": "2546:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2538:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3328,
                          "name": "adr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3296,
                          "src": "2571:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2538:36:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3330,
                      "nodeType": "ExpressionStatement",
                      "src": "2538:36:14"
                    }
                  },
                  "id": 3332,
                  "nodeType": "IfStatement",
                  "src": "2349:225:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3310,
                          "name": "clauses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3225,
                          "src": "2418:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                            "typeString": "mapping(string memory => address)"
                          }
                        },
                        "id": 3312,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3311,
                          "name": "PAYMENT_CLAUSE_KEY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3201,
                          "src": "2426:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "2418:27:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 3313,
                        "name": "adr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3296,
                        "src": "2448:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2418:33:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3315,
                    "nodeType": "ExpressionStatement",
                    "src": "2418:33:14"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3334,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3299,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3298,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2320:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2320:14:14"
              }
            ],
            "name": "notify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3294,
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "scope": 3334,
                  "src": "2246:23:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2246:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3296,
                  "name": "adr",
                  "nodeType": "VariableDeclaration",
                  "scope": 3334,
                  "src": "2279:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3295,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2279:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2236:60:14"
            },
            "returnParameters": {
              "id": 3300,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2339:0:14"
            },
            "scope": 3807,
            "src": "2221:360:14",
            "stateMutability": "nonpayable",
            "superFunction": 6926,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3347,
              "nodeType": "Block",
              "src": "2655:100:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3340,
                        "name": "SIGNATURE_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3189,
                        "src": "2684:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3341,
                        "name": "SIGNATURE_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3183,
                        "src": "2709:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3343,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7367,
                            "src": "2742:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Signature_$3807",
                              "typeString": "contract Signature"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Signature_$3807",
                              "typeString": "contract Signature"
                            }
                          ],
                          "id": 3342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2734:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2734:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3339,
                      "name": "_notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3729,
                      "src": "2665:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 3345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:83:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3346,
                  "nodeType": "ExpressionStatement",
                  "src": "2665:83:14"
                }
              ]
            },
            "documentation": null,
            "id": 3348,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3337,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3336,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2636:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2636:14:14"
              }
            ],
            "name": "notifyCreation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2610:2:14"
            },
            "returnParameters": {
              "id": 3338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2655:0:14"
            },
            "scope": 3807,
            "src": "2587:168:14",
            "stateMutability": "nonpayable",
            "superFunction": 6964,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3386,
              "nodeType": "Block",
              "src": "2936:263:14",
              "statements": [
                {
                  "assignments": [
                    3360
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3360,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3386,
                      "src": "2946:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3359,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "2946:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3364,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3362,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3350,
                        "src": "2988:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3361,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "2975:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2975:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2946:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3368,
                        "name": "signatureType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3352,
                        "src": "3024:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3369,
                        "name": "documentCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3354,
                        "src": "3039:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3360,
                        "src": "3010:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6804,
                      "src": "3010:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256) external"
                      }
                    },
                    "id": 3370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3010:47:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3371,
                  "nodeType": "ExpressionStatement",
                  "src": "3010:47:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3375,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3350,
                        "src": "3085:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3372,
                        "name": "documentsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3215,
                        "src": "3068:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 3374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3068:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 3376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3068:28:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3377,
                  "nodeType": "ExpressionStatement",
                  "src": "3068:28:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3379,
                        "name": "DOCUMENT_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "3126:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3380,
                        "name": "DOCUMENT_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3186,
                        "src": "3150:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3382,
                            "name": "document",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3360,
                            "src": "3182:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          ],
                          "id": 3381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3174:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3174:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3378,
                      "name": "_notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3729,
                      "src": "3107:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3107:85:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3385,
                  "nodeType": "ExpressionStatement",
                  "src": "3107:85:14"
                }
              ]
            },
            "documentation": null,
            "id": 3387,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3357,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3356,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2917:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2917:14:14"
              }
            ],
            "name": "createDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3350,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2794:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3349,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2794:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3352,
                  "name": "signatureType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2828:27:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3351,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2828:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3354,
                  "name": "documentCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2865:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3353,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2865:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2784:109:14"
            },
            "returnParameters": {
              "id": 3358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2936:0:14"
            },
            "scope": 3807,
            "src": "2761:438:14",
            "stateMutability": "nonpayable",
            "superFunction": 6973,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3408,
              "nodeType": "Block",
              "src": "3345:113:14",
              "statements": [
                {
                  "assignments": [
                    3397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3397,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3408,
                      "src": "3355:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3396,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3355:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3401,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3399,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3389,
                        "src": "3397:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3398,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3384:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3384:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3355:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3405,
                        "name": "documentOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3391,
                        "src": "3437:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3402,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3397,
                        "src": "3419:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6814,
                      "src": "3419:17:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3419:32:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "3419:32:14"
                }
              ]
            },
            "documentation": null,
            "id": 3409,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3394,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3393,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "3326:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3326:14:14"
              }
            ],
            "name": "setDocumentOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3389,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "3241:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3388,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3391,
                  "name": "documentOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "3275:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3390,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3275:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3231:71:14"
            },
            "returnParameters": {
              "id": 3395,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3345:0:14"
            },
            "scope": 3807,
            "src": "3205:253:14",
            "stateMutability": "nonpayable",
            "superFunction": 6980,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3430,
              "nodeType": "Block",
              "src": "3612:117:14",
              "statements": [
                {
                  "assignments": [
                    3419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3419,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3430,
                      "src": "3622:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3418,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3622:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3423,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "3664:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3420,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3651:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3651:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3622:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3427,
                        "name": "signedFileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3413,
                        "src": "3707:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3424,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "3686:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFileHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6856,
                      "src": "3686:20:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 3428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3686:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3429,
                  "nodeType": "ExpressionStatement",
                  "src": "3686:36:14"
                }
              ]
            },
            "documentation": null,
            "id": 3431,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3416,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3415,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "3593:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3593:14:14"
              }
            ],
            "name": "setSignedFileHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3411,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "3501:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3501:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "signedFileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "3535:28:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3535:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3491:78:14"
            },
            "returnParameters": {
              "id": 3417,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3612:0:14"
            },
            "scope": 3807,
            "src": "3464:265:14",
            "stateMutability": "nonpayable",
            "superFunction": 6987,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3452,
              "nodeType": "Block",
              "src": "3873:110:14",
              "statements": [
                {
                  "assignments": [
                    3441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3441,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3452,
                      "src": "3883:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3440,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3883:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3445,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3443,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3433,
                        "src": "3925:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3442,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3912:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3912:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3883:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3449,
                        "name": "cancelReason",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3435,
                        "src": "3963:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3446,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3441,
                        "src": "3947:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cancel",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6838,
                      "src": "3947:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 3450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3947:29:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3451,
                  "nodeType": "ExpressionStatement",
                  "src": "3947:29:14"
                }
              ]
            },
            "documentation": null,
            "id": 3453,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3438,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3437,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3292,
                  "src": "3859:9:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3859:9:14"
              }
            ],
            "name": "cancelDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3433,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3453,
                  "src": "3769:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3432,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3769:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3435,
                  "name": "cancelReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 3453,
                  "src": "3803:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3434,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3803:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3759:76:14"
            },
            "returnParameters": {
              "id": 3439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3873:0:14"
            },
            "scope": 3807,
            "src": "3735:248:14",
            "stateMutability": "nonpayable",
            "superFunction": 6994,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3486,
              "nodeType": "Block",
              "src": "4236:236:14",
              "statements": [
                {
                  "assignments": [
                    3471
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3471,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3486,
                      "src": "4246:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3470,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "4246:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3475,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3473,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "4288:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3472,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "4275:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4275:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4246:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3479,
                        "name": "fileId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3457,
                        "src": "4356:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3480,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "4376:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3481,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3461,
                        "src": "4398:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3482,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3463,
                        "src": "4420:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3483,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "4447:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3476,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3471,
                        "src": "4310:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createFile",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6851,
                      "src": "4310:32:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4310:155:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3485,
                  "nodeType": "ExpressionStatement",
                  "src": "4310:155:14"
                }
              ]
            },
            "documentation": null,
            "id": 3487,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3468,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3467,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "4217:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4217:14:14"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3455,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4018:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3457,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4052:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4052:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3459,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4082:22:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3458,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4082:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4114:22:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4114:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3463,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4146:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3462,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4146:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3465,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4174:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3464,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4174:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4008:185:14"
            },
            "returnParameters": {
              "id": 3469,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4236:0:14"
            },
            "scope": 3807,
            "src": "3989:483:14",
            "stateMutability": "nonpayable",
            "superFunction": 7009,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3517,
              "nodeType": "Block",
              "src": "4712:211:14",
              "statements": [
                {
                  "assignments": [
                    3503
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3503,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3517,
                      "src": "4722:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3502,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "4722:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3507,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3505,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3489,
                        "src": "4764:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3504,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "4751:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4751:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4722:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3511,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3491,
                        "src": "4820:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3512,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3493,
                        "src": "4841:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3513,
                        "name": "eventUserAgent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3495,
                        "src": "4864:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3514,
                        "name": "eventCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3497,
                        "src": "4892:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3508,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3503,
                        "src": "4786:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6867,
                      "src": "4786:20:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256) external"
                      }
                    },
                    "id": 3515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4786:130:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3516,
                  "nodeType": "ExpressionStatement",
                  "src": "4786:130:14"
                }
              ]
            },
            "documentation": null,
            "id": 3518,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3500,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3499,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "4693:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4693:14:14"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3489,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4508:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3488,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4508:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3491,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4542:21:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3490,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4542:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3493,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4573:23:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3492,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4573:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3495,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4606:28:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3494,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4606:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3497,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4644:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3496,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4498:171:14"
            },
            "returnParameters": {
              "id": 3501,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4712:0:14"
            },
            "scope": 3807,
            "src": "4478:445:14",
            "stateMutability": "nonpayable",
            "superFunction": 7022,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3529,
              "nodeType": "Block",
              "src": "5060:43:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3525,
                      "name": "clauses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3225,
                      "src": "5077:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                        "typeString": "mapping(string memory => address)"
                      }
                    },
                    "id": 3527,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3526,
                      "name": "clauseType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3520,
                      "src": "5085:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5077:19:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3524,
                  "id": 3528,
                  "nodeType": "Return",
                  "src": "5070:26:14"
                }
              ]
            },
            "documentation": null,
            "id": 3530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3520,
                  "name": "clauseType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3530,
                  "src": "4957:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3519,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4957:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4947:40:14"
            },
            "returnParameters": {
              "id": 3524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3523,
                  "name": "clauseAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3530,
                  "src": "5033:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3522,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5033:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5032:23:14"
            },
            "scope": 3807,
            "src": "4929:174:14",
            "stateMutability": "view",
            "superFunction": 7029,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3552,
              "nodeType": "Block",
              "src": "5228:115:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "5242:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3538,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3532,
                          "src": "5258:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3537,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "5243:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5243:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3545,
                  "nodeType": "IfStatement",
                  "src": "5238:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5286:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5278:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5278:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3536,
                    "id": 3544,
                    "nodeType": "Return",
                    "src": "5271:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3547,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5314:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3549,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3548,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3532,
                          "src": "5324:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5314:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      ],
                      "id": 3546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5306:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5306:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3536,
                  "id": 3551,
                  "nodeType": "Return",
                  "src": "5299:37:14"
                }
              ]
            },
            "documentation": null,
            "id": 3553,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3532,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "5139:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3531,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5139:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5129:40:14"
            },
            "returnParameters": {
              "id": 3536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3535,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "5215:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5215:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5214:9:14"
            },
            "scope": 3807,
            "src": "5109:234:14",
            "stateMutability": "view",
            "superFunction": 7043,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3579,
              "nodeType": "Block",
              "src": "5461:126:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3560,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3555,
                      "src": "5475:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3561,
                          "name": "documentsId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3215,
                          "src": "5483:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 3562,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5483:18:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5504:1:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5483:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5475:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3570,
                  "nodeType": "IfStatement",
                  "src": "5471:53:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5522:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5514:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5514:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3559,
                    "id": 3569,
                    "nodeType": "Return",
                    "src": "5507:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3572,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5550:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3576,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3573,
                            "name": "documentsId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3215,
                            "src": "5560:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 3575,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3574,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3555,
                            "src": "5572:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5560:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5550:29:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      ],
                      "id": 3571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5542:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5542:38:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3559,
                  "id": 3578,
                  "nodeType": "Return",
                  "src": "5535:45:14"
                }
              ]
            },
            "documentation": null,
            "id": 3580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentByIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3555,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5386:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3554,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5386:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5376:26:14"
            },
            "returnParameters": {
              "id": 3559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3558,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5448:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5448:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5447:9:14"
            },
            "scope": 3807,
            "src": "5349:238:14",
            "stateMutability": "view",
            "superFunction": 7050,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3588,
              "nodeType": "Block",
              "src": "5676:42:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3585,
                      "name": "documentsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3215,
                      "src": "5693:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 3586,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "5693:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3584,
                  "id": 3587,
                  "nodeType": "Return",
                  "src": "5686:25:14"
                }
              ]
            },
            "documentation": null,
            "id": 3589,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5618:2:14"
            },
            "returnParameters": {
              "id": 3584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3583,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3589,
                  "src": "5666:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3582,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5666:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5665:6:14"
            },
            "scope": 3807,
            "src": "5593:125:14",
            "stateMutability": "view",
            "superFunction": 7055,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3629,
              "nodeType": "Block",
              "src": "5839:246:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "5853:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3597,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3591,
                          "src": "5869:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3596,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "5854:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5854:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3604,
                  "nodeType": "IfStatement",
                  "src": "5849:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5897:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5889:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5889:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3595,
                    "id": 3603,
                    "nodeType": "Return",
                    "src": "5882:17:14"
                  }
                },
                {
                  "assignments": [
                    3606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3606,
                      "name": "signatureFile",
                      "nodeType": "VariableDeclaration",
                      "scope": 3629,
                      "src": "5910:27:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3605,
                        "name": "FileInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6917,
                        "src": "5910:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3612,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3607,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5940:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3609,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3608,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3591,
                          "src": "5950:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5940:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "file",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6793,
                      "src": "5940:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_FileInterface_$6917_$",
                        "typeString": "function () view external returns (contract FileInterface)"
                      }
                    },
                    "id": 3611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5940:28:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5910:58:14"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3614,
                          "name": "signatureFile",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3606,
                          "src": "5991:13:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_FileInterface_$6917",
                            "typeString": "contract FileInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_FileInterface_$6917",
                            "typeString": "contract FileInterface"
                          }
                        ],
                        "id": 3613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5983:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5983:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6017:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6009:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6009:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5983:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3624,
                  "nodeType": "IfStatement",
                  "src": "5979:59:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6036:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6028:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6028:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3595,
                    "id": 3623,
                    "nodeType": "Return",
                    "src": "6021:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3626,
                        "name": "signatureFile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3606,
                        "src": "6064:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      ],
                      "id": 3625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6056:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6056:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3595,
                  "id": 3628,
                  "nodeType": "Return",
                  "src": "6049:29:14"
                }
              ]
            },
            "documentation": null,
            "id": 3630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3591,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3630,
                  "src": "5750:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3590,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5750:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5740:40:14"
            },
            "returnParameters": {
              "id": 3595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3594,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3630,
                  "src": "5826:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5826:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5825:9:14"
            },
            "scope": 3807,
            "src": "5724:361:14",
            "stateMutability": "view",
            "superFunction": 7036,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3675,
              "nodeType": "Block",
              "src": "6238:299:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6252:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3640,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3632,
                          "src": "6268:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3639,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "6253:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6253:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3647,
                  "nodeType": "IfStatement",
                  "src": "6248:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6296:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6288:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3645,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6288:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3638,
                    "id": 3646,
                    "nodeType": "Return",
                    "src": "6281:17:14"
                  }
                },
                {
                  "assignments": [
                    3649
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3649,
                      "name": "signatureEvent",
                      "nodeType": "VariableDeclaration",
                      "scope": 3675,
                      "src": "6309:29:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3648,
                        "name": "EventInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6891,
                        "src": "6309:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3658,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3655,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3634,
                            "src": "6400:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3651,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3221,
                              "src": "6356:9:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                                "typeString": "mapping(string memory => contract DocumentInterface)"
                              }
                            },
                            "id": 3653,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3652,
                              "name": "documentId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3632,
                              "src": "6366:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6356:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          },
                          "id": 3654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6874,
                          "src": "6356:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_address_$",
                            "typeString": "function (string memory) view external returns (address)"
                          }
                        },
                        "id": 3656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6356:61:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3650,
                      "name": "EventInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6891,
                      "src": "6341:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                        "typeString": "type(contract EventInterface)"
                      }
                    },
                    "id": 3657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6341:77:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6309:109:14"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3660,
                          "name": "signatureEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3649,
                          "src": "6441:14:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        ],
                        "id": 3659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6433:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6433:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6468:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6460:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3664,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6460:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6433:37:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3670,
                  "nodeType": "IfStatement",
                  "src": "6429:60:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6487:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6479:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6479:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3638,
                    "id": 3669,
                    "nodeType": "Return",
                    "src": "6472:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3672,
                        "name": "signatureEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3649,
                        "src": "6515:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 3671,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6507:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6507:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3638,
                  "id": 3674,
                  "nodeType": "Return",
                  "src": "6500:30:14"
                }
              ]
            },
            "documentation": null,
            "id": 3676,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3632,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6118:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3631,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6118:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3634,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6152:21:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3633,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6152:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6108:71:14"
            },
            "returnParameters": {
              "id": 3638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3637,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6225:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3636,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6225:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6224:9:14"
            },
            "scope": 3807,
            "src": "6091:446:14",
            "stateMutability": "view",
            "superFunction": 7064,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3728,
              "nodeType": "Block",
              "src": "6699:591:14",
              "statements": [
                {
                  "assignments": [
                    3686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3686,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 3728,
                      "src": "6709:24:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3685,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6709:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3687,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6709:24:14"
                },
                {
                  "assignments": [
                    3689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3689,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 3728,
                      "src": "6743:22:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3688,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6743:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3691,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6768:1:14",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6743:26:14"
                },
                {
                  "body": {
                    "id": 3721,
                    "nodeType": "Block",
                    "src": "6783:461:14",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3692,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "6797:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3695,
                                "name": "notifiersKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3678,
                                "src": "6854:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3696,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3689,
                                "src": "6868:17:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3693,
                                "name": "userContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3227,
                                "src": "6816:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 3694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "6816:37:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (string memory,uint256) view external returns (address)"
                              }
                            },
                            "id": 3697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6816:70:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6797:89:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3699,
                        "nodeType": "ExpressionStatement",
                        "src": "6797:89:14"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6900:19:14",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 3700,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3689,
                            "src": "6902:17:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ExpressionStatement",
                        "src": "6900:19:14"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3703,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "6938:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6966:1:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6958:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 3706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6958:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6938:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3720,
                        "nodeType": "IfStatement",
                        "src": "6934:300:14",
                        "trueBody": {
                          "id": 3719,
                          "nodeType": "Block",
                          "src": "6970:264:14",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 3713,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7080:24:14",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3714,
                                        "name": "createdEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3680,
                                        "src": "7130:12:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3715,
                                        "name": "adrToNotify",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3682,
                                        "src": "7168:11:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3711,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "7031:3:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 3712,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7031:23:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 3716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7031:170:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3708,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3686,
                                    "src": "6988:16:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 3710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6988:21:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 3717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6988:231:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 3718,
                              "nodeType": "ExpressionStatement",
                              "src": "6988:231:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3722,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3686,
                      "src": "7252:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7280:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7272:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7272:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "7252:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3727,
                  "nodeType": "DoWhileStatement",
                  "src": "6780:504:14"
                }
              ]
            },
            "documentation": null,
            "id": 3729,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_notifyEntityEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3678,
                  "name": "notifiersKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6581:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3677,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6581:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3680,
                  "name": "createdEvent",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6617:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3679,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6617:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3682,
                  "name": "adrToNotify",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6653:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6653:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6571:107:14"
            },
            "returnParameters": {
              "id": 3684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6699:0:14"
            },
            "scope": 3807,
            "src": "6543:747:14",
            "stateMutability": "nonpayable",
            "superFunction": 7073,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3787,
              "nodeType": "Block",
              "src": "7414:640:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3737,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7443:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3736,
                      "name": "_documentExist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3806,
                      "src": "7428:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (string memory) view returns (bool)"
                      }
                    },
                    "id": 3738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7428:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3743,
                  "nodeType": "IfStatement",
                  "src": "7424:72:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3739,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3221,
                        "src": "7475:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "mapping(string memory => contract DocumentInterface)"
                        }
                      },
                      "id": 3741,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3740,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7485:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7475:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "functionReturnParameters": 3735,
                    "id": 3742,
                    "nodeType": "Return",
                    "src": "7468:28:14"
                  }
                },
                {
                  "assignments": [
                    3745,
                    3747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3745,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 3787,
                      "src": "7521:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3744,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7521:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3747,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 3787,
                      "src": "7547:23:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3746,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7547:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3757,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f79446f63756d656e7428737472696e672c6164647265737329",
                            "id": 3752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7642:32:14",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_89b77a8495231ee625123fa424678d538cfdaa505826ee51f44ef5af8c093d8a",
                              "typeString": "literal_string \"deployDocument(string,address)\""
                            },
                            "value": "deployDocument(string,address)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3753,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3731,
                            "src": "7688:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3754,
                            "name": "deployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3208,
                            "src": "7712:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_89b77a8495231ee625123fa424678d538cfdaa505826ee51f44ef5af8c093d8a",
                              "typeString": "literal_string \"deployDocument(string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3750,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "7618:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7618:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7618:103:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3748,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3208,
                        "src": "7583:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7583:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 3756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7583:148:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7507:224:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3759,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3745,
                        "src": "7763:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e6720646f63756d656e74",
                        "id": 3760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7784:32:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9bc2a9b73a353f01c77f0b5e40f9ea644da97bea6754d2fa4eb714fb98d6cda",
                          "typeString": "literal_string \"Error while deploying document\""
                        },
                        "value": "Error while deploying document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9bc2a9b73a353f01c77f0b5e40f9ea644da97bea6754d2fa4eb714fb98d6cda",
                          "typeString": "literal_string \"Error while deploying document\""
                        }
                      ],
                      "id": 3758,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7742:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7742:84:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3762,
                  "nodeType": "ExpressionStatement",
                  "src": "7742:84:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3763,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3221,
                        "src": "7837:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "mapping(string memory => contract DocumentInterface)"
                        }
                      },
                      "id": 3765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3764,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7847:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7837:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3769,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3747,
                              "src": "7914:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3767,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "7892:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 3768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "7892:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 3770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7892:33:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3766,
                        "name": "DocumentInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6880,
                        "src": "7861:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "type(contract DocumentInterface)"
                        }
                      },
                      "id": 3771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7861:74:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "src": "7837:98:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "id": 3773,
                  "nodeType": "ExpressionStatement",
                  "src": "7837:98:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3779,
                            "name": "userContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3227,
                            "src": "7994:12:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                              "typeString": "contract SignaturitUserInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                              "typeString": "contract SignaturitUserInterface"
                            }
                          ],
                          "id": 3778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7986:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7986:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3774,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "7946:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3776,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3775,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3731,
                          "src": "7956:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7946:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setSignatureOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6809,
                      "src": "7946:39:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 3781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7946:62:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3782,
                  "nodeType": "ExpressionStatement",
                  "src": "7946:62:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3783,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3221,
                      "src": "8026:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "mapping(string memory => contract DocumentInterface)"
                      }
                    },
                    "id": 3785,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3784,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3731,
                      "src": "8036:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8026:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "functionReturnParameters": 3735,
                  "id": 3786,
                  "nodeType": "Return",
                  "src": "8019:28:14"
                }
              ]
            },
            "documentation": null,
            "id": 3788,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3731,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3788,
                  "src": "7327:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3730,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7327:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7317:40:14"
            },
            "returnParameters": {
              "id": 3735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3734,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3788,
                  "src": "7391:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                    "typeString": "contract DocumentInterface"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3733,
                    "name": "DocumentInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6880,
                    "src": "7391:17:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7390:19:14"
            },
            "scope": 3807,
            "src": "7296:758:14",
            "stateMutability": "nonpayable",
            "superFunction": 7080,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3805,
              "nodeType": "Block",
              "src": "8180:68:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3796,
                            "name": "documents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3221,
                            "src": "8205:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                              "typeString": "mapping(string memory => contract DocumentInterface)"
                            }
                          },
                          "id": 3798,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3797,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3790,
                            "src": "8215:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8205:21:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                            "typeString": "contract DocumentInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                            "typeString": "contract DocumentInterface"
                          }
                        ],
                        "id": 3795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8197:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8197:30:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8239:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8231:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8231:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8197:44:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3794,
                  "id": 3804,
                  "nodeType": "Return",
                  "src": "8190:51:14"
                }
              ]
            },
            "documentation": null,
            "id": 3806,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_documentExist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3790,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "8093:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3789,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8093:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8083:40:14"
            },
            "returnParameters": {
              "id": 3794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "8170:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8170:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8169:6:14"
            },
            "scope": 3807,
            "src": "8060:188:14",
            "stateMutability": "view",
            "superFunction": 7087,
            "visibility": "private"
          }
        ],
        "scope": 3808,
        "src": "412:7838:14"
      }
    ],
    "src": "0:8251:14"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Signature.sol",
    "exportedSymbols": {
      "Signature": [
        3807
      ]
    },
    "id": 3808,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3168,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:14"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignatureInterface.sol",
        "file": "./interfaces/SignatureInterface.sol",
        "id": 3169,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7089,
        "src": "57:45:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/NotifierInterface.sol",
        "file": "./interfaces/NotifierInterface.sol",
        "id": 3170,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6928,
        "src": "103:44:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/DocumentInterface.sol",
        "file": "./interfaces/DocumentInterface.sol",
        "id": 3171,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6881,
        "src": "148:44:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 3172,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7252,
        "src": "193:50:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 3173,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6918,
        "src": "244:40:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 3174,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 6892,
        "src": "285:41:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 3175,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7252,
        "src": "327:50:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 3176,
        "nodeType": "ImportDirective",
        "scope": 3808,
        "sourceUnit": 7290,
        "src": "378:31:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3177,
              "name": "SignatureInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7088,
              "src": "434:18:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignatureInterface_$7088",
                "typeString": "contract SignatureInterface"
              }
            },
            "id": 3178,
            "nodeType": "InheritanceSpecifier",
            "src": "434:18:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3179,
              "name": "NotifierInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6927,
              "src": "454:17:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                "typeString": "contract NotifierInterface"
              }
            },
            "id": 3180,
            "nodeType": "InheritanceSpecifier",
            "src": "454:17:14"
          }
        ],
        "contractDependencies": [
          6927,
          7088
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3807,
        "linearizedBaseContracts": [
          3807,
          6927,
          7088
        ],
        "name": "Signature",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 3183,
            "name": "SIGNATURE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "478:78:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3181,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "478:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7369676e61747572652e636f6e74726163742e63726561746564",
              "id": 3182,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "528:28:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3c84dd064979bbdb715484653bafe8622e8a568c4ab0aeaa9d5d3f68f5a44beb",
                "typeString": "literal_string \"signature.contract.created\""
              },
              "value": "signature.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3186,
            "name": "DOCUMENT_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "562:76:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3184,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "562:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e63726561746564",
              "id": 3185,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "611:27:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_cf7018f27b4f1c9203d649679ba3bf8e0acd989de189f14a3ecc0f834baee2ad",
                "typeString": "literal_string \"document.contract.created\""
              },
              "value": "document.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3189,
            "name": "SIGNATURE_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "645:71:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3187,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "645:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7369676e61747572652d6e6f74696669657273",
              "id": 3188,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "695:21:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3b317d4221d274688226013f55affecc0f5c09cf980dc6d9578c6a596721f3cf",
                "typeString": "literal_string \"signature-notifiers\""
              },
              "value": "signature-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3192,
            "name": "DOCUMENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "722:69:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3190,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "722:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742d6e6f74696669657273",
              "id": 3191,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "771:20:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7d28b4fa182b49d585cf0be720ed320f87b6af7199ef0f994429e1aa22d0664d",
                "typeString": "literal_string \"document-notifiers\""
              },
              "value": "document-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3195,
            "name": "PAYMENT_CLAUSE_CREATED",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "798:73:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3193,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "798:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e745f636c617573652e63726561746564",
              "id": 3194,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "847:24:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8692ad01fe67ad9dfd2c7e5cd12c282c30db07c2d37128c1b7a41fe4639ff20d",
                "typeString": "literal_string \"payment_clause.created\""
              },
              "value": "payment_clause.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3198,
            "name": "TIMELOGGER_CLAUSE_CREATED",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "877:79:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3196,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "877:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74696d656c6f676765725f636c617573652e63726561746564",
              "id": 3197,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "929:27:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_56c229a2837880df25843d0a92e84866a9b9b9229785161f2a6bcb14b164de6f",
                "typeString": "literal_string \"timelogger_clause.created\""
              },
              "value": "timelogger_clause.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3201,
            "name": "PAYMENT_CLAUSE_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "962:54:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3199,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "962:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "7061796d656e74",
              "id": 3200,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1007:9:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_1fab0c92eaead7da02fe29795732249e0861c98d6738709e6be992a170920770",
                "typeString": "literal_string \"payment\""
              },
              "value": "payment"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 3204,
            "name": "TIMELOGGER_CLAUSE_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1022:60:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 3202,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1022:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74696d656c6f67676572",
              "id": 3203,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:12:14",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5b7ad07ae4f4e6c07380a7e94f37f18caf3eb1de0efed16e937b2fa49edef7af",
                "typeString": "literal_string \"timelogger\""
              },
              "value": "timelogger"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3206,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1089:25:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3205,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1089:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3208,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1120:23:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3207,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1120:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3210,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1149:20:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3209,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1149:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3212,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1176:16:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 3211,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1176:6:14",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3215,
            "name": "documentsId",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1199:27:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 3213,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1199:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 3214,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1199:8:14",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3217,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1233:20:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 3216,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "1233:3:14",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3221,
            "name": "documents",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1260:54:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
              "typeString": "mapping(string => contract DocumentInterface)"
            },
            "typeName": {
              "id": 3220,
              "keyType": {
                "id": 3218,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1268:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1260:36:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                "typeString": "mapping(string => contract DocumentInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3219,
                "name": "DocumentInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6880,
                "src": "1278:17:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                  "typeString": "contract DocumentInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3225,
            "name": "clauses",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1321:42:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
              "typeString": "mapping(string => address)"
            },
            "typeName": {
              "id": 3224,
              "keyType": {
                "id": 3222,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1329:6:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1321:26:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                "typeString": "mapping(string => address)"
              },
              "valueType": {
                "id": 3223,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1339:7:14",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3227,
            "name": "userContract",
            "nodeType": "VariableDeclaration",
            "scope": 3807,
            "src": "1370:43:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 3226,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "1370:23:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3267,
              "nodeType": "Block",
              "src": "1619:250:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3240,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3206,
                      "src": "1629:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3241,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1642:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1642:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1629:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3244,
                  "nodeType": "ExpressionStatement",
                  "src": "1629:23:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3245,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3208,
                      "src": "1662:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3246,
                      "name": "deployerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3231,
                      "src": "1673:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1662:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3248,
                  "nodeType": "ExpressionStatement",
                  "src": "1662:26:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3249,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "1699:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3250,
                      "name": "signatureOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3235,
                      "src": "1707:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1699:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3252,
                  "nodeType": "ExpressionStatement",
                  "src": "1699:22:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3253,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3227,
                      "src": "1731:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3255,
                          "name": "userSmartContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3237,
                          "src": "1770:24:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3254,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1746:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 3256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1746:49:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1731:64:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 3258,
                  "nodeType": "ExpressionStatement",
                  "src": "1731:64:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3259,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3212,
                      "src": "1806:2:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3260,
                      "name": "signatureId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3229,
                      "src": "1811:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1806:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 3262,
                  "nodeType": "ExpressionStatement",
                  "src": "1806:16:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3263,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3217,
                      "src": "1832:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3264,
                      "name": "signatureCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3233,
                      "src": "1844:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1832:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 3266,
                  "nodeType": "ExpressionStatement",
                  "src": "1832:30:14"
                }
              ]
            },
            "documentation": null,
            "id": 3268,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3229,
                  "name": "signatureId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1441:25:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3228,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1441:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3231,
                  "name": "deployerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1476:23:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3230,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1476:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3233,
                  "name": "signatureCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1509:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3232,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1509:3:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3235,
                  "name": "signatureOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1541:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3237,
                  "name": "userSmartContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3268,
                  "src": "1573:32:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1573:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1431:180:14"
            },
            "returnParameters": {
              "id": 3239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1619:0:14"
            },
            "scope": 3807,
            "src": "1420:449:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3279,
              "nodeType": "Block",
              "src": "1901:146:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3271,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7316,
                            "src": "1932:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 3272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1932:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3273,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3206,
                          "src": "1945:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1932:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 3275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1969:49:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        },
                        "value": "Only Signaturit account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c4d39fb6c3ef76259aa8a9c7aa83179d818e17cba0db927afcdb36c571443b99",
                          "typeString": "literal_string \"Only Signaturit account can perform this action\""
                        }
                      ],
                      "id": 3270,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1911:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1911:117:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3277,
                  "nodeType": "ExpressionStatement",
                  "src": "1911:117:14"
                },
                {
                  "id": 3278,
                  "nodeType": "PlaceholderStatement",
                  "src": "2039:1:14"
                }
              ]
            },
            "documentation": null,
            "id": 3280,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3269,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1898:2:14"
            },
            "src": "1875:172:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3291,
              "nodeType": "Block",
              "src": "2074:141:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3283,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "2105:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2105:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3285,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3210,
                          "src": "2119:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2105:19:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 3287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2138:48:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        },
                        "value": "Only the owner account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        }
                      ],
                      "id": 3282,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2084:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2084:112:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3289,
                  "nodeType": "ExpressionStatement",
                  "src": "2084:112:14"
                },
                {
                  "id": 3290,
                  "nodeType": "PlaceholderStatement",
                  "src": "2207:1:14"
                }
              ]
            },
            "documentation": null,
            "id": 3292,
            "name": "ownerOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3281,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2071:2:14"
            },
            "src": "2053:162:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3333,
              "nodeType": "Block",
              "src": "2339:242:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3303,
                          "name": "attribute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3294,
                          "src": "2366:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3301,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "2353:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 3302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "2353:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 3304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2353:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3307,
                          "name": "PAYMENT_CLAUSE_CREATED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3195,
                          "src": "2393:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3305,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "2380:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 3306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "2380:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 3308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2380:36:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2353:63:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 3324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3318,
                            "name": "attribute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3294,
                            "src": "2483:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3316,
                            "name": "Utils",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7289,
                            "src": "2470:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                              "typeString": "type(library Utils)"
                            }
                          },
                          "id": 3317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keccak",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7288,
                          "src": "2470:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (string memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2470:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3322,
                            "name": "TIMELOGGER_CLAUSE_CREATED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "2510:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3320,
                            "name": "Utils",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7289,
                            "src": "2497:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                              "typeString": "type(library Utils)"
                            }
                          },
                          "id": 3321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keccak",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7288,
                          "src": "2497:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (string memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2497:39:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "2470:66:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3331,
                    "nodeType": "IfStatement",
                    "src": "2466:108:14",
                    "trueBody": {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3325,
                            "name": "clauses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3225,
                            "src": "2538:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                              "typeString": "mapping(string memory => address)"
                            }
                          },
                          "id": 3327,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3326,
                            "name": "TIMELOGGER_CLAUSE_KEY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3204,
                            "src": "2546:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2538:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3328,
                          "name": "adr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3296,
                          "src": "2571:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2538:36:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3330,
                      "nodeType": "ExpressionStatement",
                      "src": "2538:36:14"
                    }
                  },
                  "id": 3332,
                  "nodeType": "IfStatement",
                  "src": "2349:225:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3310,
                          "name": "clauses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3225,
                          "src": "2418:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                            "typeString": "mapping(string memory => address)"
                          }
                        },
                        "id": 3312,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3311,
                          "name": "PAYMENT_CLAUSE_KEY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3201,
                          "src": "2426:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "2418:27:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 3313,
                        "name": "adr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3296,
                        "src": "2448:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2418:33:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3315,
                    "nodeType": "ExpressionStatement",
                    "src": "2418:33:14"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3334,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3299,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3298,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2320:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2320:14:14"
              }
            ],
            "name": "notify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3294,
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "scope": 3334,
                  "src": "2246:23:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2246:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3296,
                  "name": "adr",
                  "nodeType": "VariableDeclaration",
                  "scope": 3334,
                  "src": "2279:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3295,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2279:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2236:60:14"
            },
            "returnParameters": {
              "id": 3300,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2339:0:14"
            },
            "scope": 3807,
            "src": "2221:360:14",
            "stateMutability": "nonpayable",
            "superFunction": 6926,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3347,
              "nodeType": "Block",
              "src": "2655:100:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3340,
                        "name": "SIGNATURE_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3189,
                        "src": "2684:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3341,
                        "name": "SIGNATURE_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3183,
                        "src": "2709:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3343,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7367,
                            "src": "2742:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Signature_$3807",
                              "typeString": "contract Signature"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Signature_$3807",
                              "typeString": "contract Signature"
                            }
                          ],
                          "id": 3342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2734:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2734:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3339,
                      "name": "_notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3729,
                      "src": "2665:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 3345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:83:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3346,
                  "nodeType": "ExpressionStatement",
                  "src": "2665:83:14"
                }
              ]
            },
            "documentation": null,
            "id": 3348,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3337,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3336,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2636:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2636:14:14"
              }
            ],
            "name": "notifyCreation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2610:2:14"
            },
            "returnParameters": {
              "id": 3338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2655:0:14"
            },
            "scope": 3807,
            "src": "2587:168:14",
            "stateMutability": "nonpayable",
            "superFunction": 6964,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3386,
              "nodeType": "Block",
              "src": "2936:263:14",
              "statements": [
                {
                  "assignments": [
                    3360
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3360,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3386,
                      "src": "2946:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3359,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "2946:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3364,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3362,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3350,
                        "src": "2988:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3361,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "2975:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2975:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2946:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3368,
                        "name": "signatureType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3352,
                        "src": "3024:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3369,
                        "name": "documentCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3354,
                        "src": "3039:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3360,
                        "src": "3010:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6804,
                      "src": "3010:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256) external"
                      }
                    },
                    "id": 3370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3010:47:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3371,
                  "nodeType": "ExpressionStatement",
                  "src": "3010:47:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3375,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3350,
                        "src": "3085:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3372,
                        "name": "documentsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3215,
                        "src": "3068:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 3374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3068:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 3376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3068:28:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3377,
                  "nodeType": "ExpressionStatement",
                  "src": "3068:28:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3379,
                        "name": "DOCUMENT_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "3126:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3380,
                        "name": "DOCUMENT_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3186,
                        "src": "3150:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3382,
                            "name": "document",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3360,
                            "src": "3182:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          ],
                          "id": 3381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3174:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3174:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3378,
                      "name": "_notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3729,
                      "src": "3107:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3107:85:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3385,
                  "nodeType": "ExpressionStatement",
                  "src": "3107:85:14"
                }
              ]
            },
            "documentation": null,
            "id": 3387,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3357,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3356,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "2917:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2917:14:14"
              }
            ],
            "name": "createDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3350,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2794:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3349,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2794:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3352,
                  "name": "signatureType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2828:27:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3351,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2828:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3354,
                  "name": "documentCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3387,
                  "src": "2865:22:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3353,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2865:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2784:109:14"
            },
            "returnParameters": {
              "id": 3358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2936:0:14"
            },
            "scope": 3807,
            "src": "2761:438:14",
            "stateMutability": "nonpayable",
            "superFunction": 6973,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3408,
              "nodeType": "Block",
              "src": "3345:113:14",
              "statements": [
                {
                  "assignments": [
                    3397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3397,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3408,
                      "src": "3355:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3396,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3355:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3401,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3399,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3389,
                        "src": "3397:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3398,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3384:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3384:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3355:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3405,
                        "name": "documentOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3391,
                        "src": "3437:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3402,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3397,
                        "src": "3419:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6814,
                      "src": "3419:17:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3419:32:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "3419:32:14"
                }
              ]
            },
            "documentation": null,
            "id": 3409,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3394,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3393,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "3326:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3326:14:14"
              }
            ],
            "name": "setDocumentOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3389,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "3241:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3388,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3391,
                  "name": "documentOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "3275:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3390,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3275:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3231:71:14"
            },
            "returnParameters": {
              "id": 3395,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3345:0:14"
            },
            "scope": 3807,
            "src": "3205:253:14",
            "stateMutability": "nonpayable",
            "superFunction": 6980,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3430,
              "nodeType": "Block",
              "src": "3612:117:14",
              "statements": [
                {
                  "assignments": [
                    3419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3419,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3430,
                      "src": "3622:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3418,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3622:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3423,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "3664:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3420,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3651:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3651:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3622:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3427,
                        "name": "signedFileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3413,
                        "src": "3707:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3424,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "3686:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFileHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6856,
                      "src": "3686:20:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 3428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3686:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3429,
                  "nodeType": "ExpressionStatement",
                  "src": "3686:36:14"
                }
              ]
            },
            "documentation": null,
            "id": 3431,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3416,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3415,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "3593:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3593:14:14"
              }
            ],
            "name": "setSignedFileHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3411,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "3501:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3501:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "signedFileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "3535:28:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3535:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3491:78:14"
            },
            "returnParameters": {
              "id": 3417,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3612:0:14"
            },
            "scope": 3807,
            "src": "3464:265:14",
            "stateMutability": "nonpayable",
            "superFunction": 6987,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3452,
              "nodeType": "Block",
              "src": "3873:110:14",
              "statements": [
                {
                  "assignments": [
                    3441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3441,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3452,
                      "src": "3883:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3440,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "3883:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3445,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3443,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3433,
                        "src": "3925:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3442,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "3912:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3912:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3883:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3449,
                        "name": "cancelReason",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3435,
                        "src": "3963:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3446,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3441,
                        "src": "3947:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cancel",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6838,
                      "src": "3947:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 3450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3947:29:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3451,
                  "nodeType": "ExpressionStatement",
                  "src": "3947:29:14"
                }
              ]
            },
            "documentation": null,
            "id": 3453,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3438,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3437,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3292,
                  "src": "3859:9:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3859:9:14"
              }
            ],
            "name": "cancelDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3433,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3453,
                  "src": "3769:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3432,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3769:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3435,
                  "name": "cancelReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 3453,
                  "src": "3803:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3434,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3803:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3759:76:14"
            },
            "returnParameters": {
              "id": 3439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3873:0:14"
            },
            "scope": 3807,
            "src": "3735:248:14",
            "stateMutability": "nonpayable",
            "superFunction": 6994,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3486,
              "nodeType": "Block",
              "src": "4236:236:14",
              "statements": [
                {
                  "assignments": [
                    3471
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3471,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3486,
                      "src": "4246:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3470,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "4246:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3475,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3473,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "4288:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3472,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "4275:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4275:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4246:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3479,
                        "name": "fileId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3457,
                        "src": "4356:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3480,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "4376:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3481,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3461,
                        "src": "4398:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3482,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3463,
                        "src": "4420:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3483,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "4447:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3476,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3471,
                        "src": "4310:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createFile",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6851,
                      "src": "4310:32:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4310:155:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3485,
                  "nodeType": "ExpressionStatement",
                  "src": "4310:155:14"
                }
              ]
            },
            "documentation": null,
            "id": 3487,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3468,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3467,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "4217:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4217:14:14"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3455,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4018:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3457,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4052:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4052:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3459,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4082:22:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3458,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4082:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4114:22:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4114:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3463,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4146:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3462,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4146:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3465,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "4174:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3464,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4174:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4008:185:14"
            },
            "returnParameters": {
              "id": 3469,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4236:0:14"
            },
            "scope": 3807,
            "src": "3989:483:14",
            "stateMutability": "nonpayable",
            "superFunction": 7009,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3517,
              "nodeType": "Block",
              "src": "4712:211:14",
              "statements": [
                {
                  "assignments": [
                    3503
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3503,
                      "name": "document",
                      "nodeType": "VariableDeclaration",
                      "scope": 3517,
                      "src": "4722:26:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3502,
                        "name": "DocumentInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6880,
                        "src": "4722:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3507,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3505,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3489,
                        "src": "4764:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3504,
                      "name": "_getDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3788,
                      "src": "4751:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "function (string memory) returns (contract DocumentInterface)"
                      }
                    },
                    "id": 3506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4751:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4722:53:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3511,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3491,
                        "src": "4820:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3512,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3493,
                        "src": "4841:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3513,
                        "name": "eventUserAgent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3495,
                        "src": "4864:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3514,
                        "name": "eventCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3497,
                        "src": "4892:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3508,
                        "name": "document",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3503,
                        "src": "4786:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6867,
                      "src": "4786:20:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256) external"
                      }
                    },
                    "id": 3515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4786:130:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3516,
                  "nodeType": "ExpressionStatement",
                  "src": "4786:130:14"
                }
              ]
            },
            "documentation": null,
            "id": 3518,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3500,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3499,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3280,
                  "src": "4693:14:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4693:14:14"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3489,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4508:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3488,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4508:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3491,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4542:21:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3490,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4542:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3493,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4573:23:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3492,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4573:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3495,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4606:28:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3494,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4606:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3497,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3518,
                  "src": "4644:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3496,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4498:171:14"
            },
            "returnParameters": {
              "id": 3501,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4712:0:14"
            },
            "scope": 3807,
            "src": "4478:445:14",
            "stateMutability": "nonpayable",
            "superFunction": 7022,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3529,
              "nodeType": "Block",
              "src": "5060:43:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3525,
                      "name": "clauses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3225,
                      "src": "5077:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_address_$",
                        "typeString": "mapping(string memory => address)"
                      }
                    },
                    "id": 3527,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3526,
                      "name": "clauseType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3520,
                      "src": "5085:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5077:19:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3524,
                  "id": 3528,
                  "nodeType": "Return",
                  "src": "5070:26:14"
                }
              ]
            },
            "documentation": null,
            "id": 3530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3520,
                  "name": "clauseType",
                  "nodeType": "VariableDeclaration",
                  "scope": 3530,
                  "src": "4957:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3519,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4957:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4947:40:14"
            },
            "returnParameters": {
              "id": 3524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3523,
                  "name": "clauseAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3530,
                  "src": "5033:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3522,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5033:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5032:23:14"
            },
            "scope": 3807,
            "src": "4929:174:14",
            "stateMutability": "view",
            "superFunction": 7029,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3552,
              "nodeType": "Block",
              "src": "5228:115:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "5242:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3538,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3532,
                          "src": "5258:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3537,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "5243:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5243:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3545,
                  "nodeType": "IfStatement",
                  "src": "5238:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5286:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5278:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5278:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3536,
                    "id": 3544,
                    "nodeType": "Return",
                    "src": "5271:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3547,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5314:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3549,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3548,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3532,
                          "src": "5324:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5314:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      ],
                      "id": 3546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5306:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5306:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3536,
                  "id": 3551,
                  "nodeType": "Return",
                  "src": "5299:37:14"
                }
              ]
            },
            "documentation": null,
            "id": 3553,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3532,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "5139:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3531,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5139:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5129:40:14"
            },
            "returnParameters": {
              "id": 3536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3535,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "5215:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5215:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5214:9:14"
            },
            "scope": 3807,
            "src": "5109:234:14",
            "stateMutability": "view",
            "superFunction": 7043,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3579,
              "nodeType": "Block",
              "src": "5461:126:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3560,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3555,
                      "src": "5475:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3561,
                          "name": "documentsId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3215,
                          "src": "5483:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "id": 3562,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5483:18:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5504:1:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5483:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5475:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3570,
                  "nodeType": "IfStatement",
                  "src": "5471:53:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5522:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5514:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5514:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3559,
                    "id": 3569,
                    "nodeType": "Return",
                    "src": "5507:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3572,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5550:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3576,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3573,
                            "name": "documentsId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3215,
                            "src": "5560:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 3575,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3574,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3555,
                            "src": "5572:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5560:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5550:29:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      ],
                      "id": 3571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5542:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5542:38:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3559,
                  "id": 3578,
                  "nodeType": "Return",
                  "src": "5535:45:14"
                }
              ]
            },
            "documentation": null,
            "id": 3580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentByIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3555,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5386:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3554,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5386:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5376:26:14"
            },
            "returnParameters": {
              "id": 3559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3558,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5448:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5448:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5447:9:14"
            },
            "scope": 3807,
            "src": "5349:238:14",
            "stateMutability": "view",
            "superFunction": 7050,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3588,
              "nodeType": "Block",
              "src": "5676:42:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3585,
                      "name": "documentsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3215,
                      "src": "5693:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 3586,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "5693:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3584,
                  "id": 3587,
                  "nodeType": "Return",
                  "src": "5686:25:14"
                }
              ]
            },
            "documentation": null,
            "id": 3589,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5618:2:14"
            },
            "returnParameters": {
              "id": 3584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3583,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3589,
                  "src": "5666:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3582,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5666:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5665:6:14"
            },
            "scope": 3807,
            "src": "5593:125:14",
            "stateMutability": "view",
            "superFunction": 7055,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3629,
              "nodeType": "Block",
              "src": "5839:246:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "5853:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3597,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3591,
                          "src": "5869:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3596,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "5854:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5854:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3604,
                  "nodeType": "IfStatement",
                  "src": "5849:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5897:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5889:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5889:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3595,
                    "id": 3603,
                    "nodeType": "Return",
                    "src": "5882:17:14"
                  }
                },
                {
                  "assignments": [
                    3606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3606,
                      "name": "signatureFile",
                      "nodeType": "VariableDeclaration",
                      "scope": 3629,
                      "src": "5910:27:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3605,
                        "name": "FileInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6917,
                        "src": "5910:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3612,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3607,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "5940:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3609,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3608,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3591,
                          "src": "5950:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5940:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "file",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6793,
                      "src": "5940:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_FileInterface_$6917_$",
                        "typeString": "function () view external returns (contract FileInterface)"
                      }
                    },
                    "id": 3611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5940:28:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5910:58:14"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3614,
                          "name": "signatureFile",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3606,
                          "src": "5991:13:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_FileInterface_$6917",
                            "typeString": "contract FileInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_FileInterface_$6917",
                            "typeString": "contract FileInterface"
                          }
                        ],
                        "id": 3613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5983:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5983:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6017:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6009:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6009:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5983:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3624,
                  "nodeType": "IfStatement",
                  "src": "5979:59:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6036:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6028:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6028:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3595,
                    "id": 3623,
                    "nodeType": "Return",
                    "src": "6021:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3626,
                        "name": "signatureFile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3606,
                        "src": "6064:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      ],
                      "id": 3625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6056:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6056:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3595,
                  "id": 3628,
                  "nodeType": "Return",
                  "src": "6049:29:14"
                }
              ]
            },
            "documentation": null,
            "id": 3630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3591,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3630,
                  "src": "5750:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3590,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5750:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5740:40:14"
            },
            "returnParameters": {
              "id": 3595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3594,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3630,
                  "src": "5826:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5826:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5825:9:14"
            },
            "scope": 3807,
            "src": "5724:361:14",
            "stateMutability": "view",
            "superFunction": 7036,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3675,
              "nodeType": "Block",
              "src": "6238:299:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6252:27:14",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3640,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3632,
                          "src": "6268:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3639,
                        "name": "_documentExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3806,
                        "src": "6253:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6253:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3647,
                  "nodeType": "IfStatement",
                  "src": "6248:50:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6296:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6288:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3645,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6288:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3638,
                    "id": 3646,
                    "nodeType": "Return",
                    "src": "6281:17:14"
                  }
                },
                {
                  "assignments": [
                    3649
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3649,
                      "name": "signatureEvent",
                      "nodeType": "VariableDeclaration",
                      "scope": 3675,
                      "src": "6309:29:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3648,
                        "name": "EventInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6891,
                        "src": "6309:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3658,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3655,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3634,
                            "src": "6400:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3651,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3221,
                              "src": "6356:9:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                                "typeString": "mapping(string memory => contract DocumentInterface)"
                              }
                            },
                            "id": 3653,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3652,
                              "name": "documentId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3632,
                              "src": "6366:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6356:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                              "typeString": "contract DocumentInterface"
                            }
                          },
                          "id": 3654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6874,
                          "src": "6356:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_address_$",
                            "typeString": "function (string memory) view external returns (address)"
                          }
                        },
                        "id": 3656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6356:61:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3650,
                      "name": "EventInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6891,
                      "src": "6341:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                        "typeString": "type(contract EventInterface)"
                      }
                    },
                    "id": 3657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6341:77:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6309:109:14"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3660,
                          "name": "signatureEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3649,
                          "src": "6441:14:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        ],
                        "id": 3659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6433:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6433:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6468:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6460:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3664,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6460:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6433:37:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3670,
                  "nodeType": "IfStatement",
                  "src": "6429:60:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6487:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6479:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6479:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 3638,
                    "id": 3669,
                    "nodeType": "Return",
                    "src": "6472:17:14"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3672,
                        "name": "signatureEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3649,
                        "src": "6515:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 3671,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6507:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6507:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3638,
                  "id": 3674,
                  "nodeType": "Return",
                  "src": "6500:30:14"
                }
              ]
            },
            "documentation": null,
            "id": 3676,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3632,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6118:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3631,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6118:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3634,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6152:21:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3633,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6152:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6108:71:14"
            },
            "returnParameters": {
              "id": 3638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3637,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3676,
                  "src": "6225:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3636,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6225:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6224:9:14"
            },
            "scope": 3807,
            "src": "6091:446:14",
            "stateMutability": "view",
            "superFunction": 7064,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3728,
              "nodeType": "Block",
              "src": "6699:591:14",
              "statements": [
                {
                  "assignments": [
                    3686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3686,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 3728,
                      "src": "6709:24:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3685,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6709:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3687,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6709:24:14"
                },
                {
                  "assignments": [
                    3689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3689,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 3728,
                      "src": "6743:22:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3688,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6743:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3691,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6768:1:14",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6743:26:14"
                },
                {
                  "body": {
                    "id": 3721,
                    "nodeType": "Block",
                    "src": "6783:461:14",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3692,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "6797:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3695,
                                "name": "notifiersKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3678,
                                "src": "6854:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3696,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3689,
                                "src": "6868:17:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3693,
                                "name": "userContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3227,
                                "src": "6816:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 3694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "6816:37:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (string memory,uint256) view external returns (address)"
                              }
                            },
                            "id": 3697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6816:70:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6797:89:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3699,
                        "nodeType": "ExpressionStatement",
                        "src": "6797:89:14"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6900:19:14",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 3700,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3689,
                            "src": "6902:17:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ExpressionStatement",
                        "src": "6900:19:14"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3703,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "6938:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6966:1:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6958:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 3706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6958:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6938:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3720,
                        "nodeType": "IfStatement",
                        "src": "6934:300:14",
                        "trueBody": {
                          "id": 3719,
                          "nodeType": "Block",
                          "src": "6970:264:14",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 3713,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7080:24:14",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3714,
                                        "name": "createdEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3680,
                                        "src": "7130:12:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3715,
                                        "name": "adrToNotify",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3682,
                                        "src": "7168:11:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3711,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "7031:3:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 3712,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7031:23:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 3716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7031:170:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3708,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3686,
                                    "src": "6988:16:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 3710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6988:21:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 3717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6988:231:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 3718,
                              "nodeType": "ExpressionStatement",
                              "src": "6988:231:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3722,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3686,
                      "src": "7252:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7280:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7272:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7272:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "7252:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3727,
                  "nodeType": "DoWhileStatement",
                  "src": "6780:504:14"
                }
              ]
            },
            "documentation": null,
            "id": 3729,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_notifyEntityEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3678,
                  "name": "notifiersKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6581:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3677,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6581:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3680,
                  "name": "createdEvent",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6617:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3679,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6617:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3682,
                  "name": "adrToNotify",
                  "nodeType": "VariableDeclaration",
                  "scope": 3729,
                  "src": "6653:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6653:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6571:107:14"
            },
            "returnParameters": {
              "id": 3684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6699:0:14"
            },
            "scope": 3807,
            "src": "6543:747:14",
            "stateMutability": "nonpayable",
            "superFunction": 7073,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3787,
              "nodeType": "Block",
              "src": "7414:640:14",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3737,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7443:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3736,
                      "name": "_documentExist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3806,
                      "src": "7428:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (string memory) view returns (bool)"
                      }
                    },
                    "id": 3738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7428:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3743,
                  "nodeType": "IfStatement",
                  "src": "7424:72:14",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3739,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3221,
                        "src": "7475:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "mapping(string memory => contract DocumentInterface)"
                        }
                      },
                      "id": 3741,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3740,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7485:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7475:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "functionReturnParameters": 3735,
                    "id": 3742,
                    "nodeType": "Return",
                    "src": "7468:28:14"
                  }
                },
                {
                  "assignments": [
                    3745,
                    3747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3745,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 3787,
                      "src": "7521:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3744,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7521:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3747,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 3787,
                      "src": "7547:23:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3746,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7547:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3757,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f79446f63756d656e7428737472696e672c6164647265737329",
                            "id": 3752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7642:32:14",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_89b77a8495231ee625123fa424678d538cfdaa505826ee51f44ef5af8c093d8a",
                              "typeString": "literal_string \"deployDocument(string,address)\""
                            },
                            "value": "deployDocument(string,address)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3753,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3731,
                            "src": "7688:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3754,
                            "name": "deployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3208,
                            "src": "7712:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_89b77a8495231ee625123fa424678d538cfdaa505826ee51f44ef5af8c093d8a",
                              "typeString": "literal_string \"deployDocument(string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3750,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "7618:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7618:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7618:103:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3748,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3208,
                        "src": "7583:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7583:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 3756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7583:148:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7507:224:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3759,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3745,
                        "src": "7763:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e6720646f63756d656e74",
                        "id": 3760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7784:32:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9bc2a9b73a353f01c77f0b5e40f9ea644da97bea6754d2fa4eb714fb98d6cda",
                          "typeString": "literal_string \"Error while deploying document\""
                        },
                        "value": "Error while deploying document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9bc2a9b73a353f01c77f0b5e40f9ea644da97bea6754d2fa4eb714fb98d6cda",
                          "typeString": "literal_string \"Error while deploying document\""
                        }
                      ],
                      "id": 3758,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7742:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7742:84:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3762,
                  "nodeType": "ExpressionStatement",
                  "src": "7742:84:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3763,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3221,
                        "src": "7837:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "mapping(string memory => contract DocumentInterface)"
                        }
                      },
                      "id": 3765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3764,
                        "name": "documentId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3731,
                        "src": "7847:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7837:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3769,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3747,
                              "src": "7914:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3767,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "7892:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 3768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "7892:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 3770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7892:33:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3766,
                        "name": "DocumentInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6880,
                        "src": "7861:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DocumentInterface_$6880_$",
                          "typeString": "type(contract DocumentInterface)"
                        }
                      },
                      "id": 3771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7861:74:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                        "typeString": "contract DocumentInterface"
                      }
                    },
                    "src": "7837:98:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "id": 3773,
                  "nodeType": "ExpressionStatement",
                  "src": "7837:98:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3779,
                            "name": "userContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3227,
                            "src": "7994:12:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                              "typeString": "contract SignaturitUserInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                              "typeString": "contract SignaturitUserInterface"
                            }
                          ],
                          "id": 3778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7986:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7986:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3774,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3221,
                          "src": "7946:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                            "typeString": "mapping(string memory => contract DocumentInterface)"
                          }
                        },
                        "id": 3776,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3775,
                          "name": "documentId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3731,
                          "src": "7956:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7946:21:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                          "typeString": "contract DocumentInterface"
                        }
                      },
                      "id": 3777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setSignatureOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6809,
                      "src": "7946:39:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 3781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7946:62:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3782,
                  "nodeType": "ExpressionStatement",
                  "src": "7946:62:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3783,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3221,
                      "src": "8026:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                        "typeString": "mapping(string memory => contract DocumentInterface)"
                      }
                    },
                    "id": 3785,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3784,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3731,
                      "src": "8036:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8026:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "functionReturnParameters": 3735,
                  "id": 3786,
                  "nodeType": "Return",
                  "src": "8019:28:14"
                }
              ]
            },
            "documentation": null,
            "id": 3788,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3731,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3788,
                  "src": "7327:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3730,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7327:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7317:40:14"
            },
            "returnParameters": {
              "id": 3735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3734,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3788,
                  "src": "7391:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                    "typeString": "contract DocumentInterface"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3733,
                    "name": "DocumentInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6880,
                    "src": "7391:17:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                      "typeString": "contract DocumentInterface"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7390:19:14"
            },
            "scope": 3807,
            "src": "7296:758:14",
            "stateMutability": "nonpayable",
            "superFunction": 7080,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3805,
              "nodeType": "Block",
              "src": "8180:68:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3796,
                            "name": "documents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3221,
                            "src": "8205:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_DocumentInterface_$6880_$",
                              "typeString": "mapping(string memory => contract DocumentInterface)"
                            }
                          },
                          "id": 3798,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3797,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3790,
                            "src": "8215:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8205:21:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                            "typeString": "contract DocumentInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                            "typeString": "contract DocumentInterface"
                          }
                        ],
                        "id": 3795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8197:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8197:30:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8239:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 3800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8231:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 3802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8231:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8197:44:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3794,
                  "id": 3804,
                  "nodeType": "Return",
                  "src": "8190:51:14"
                }
              ]
            },
            "documentation": null,
            "id": 3806,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_documentExist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3790,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "8093:24:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3789,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8093:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8083:40:14"
            },
            "returnParameters": {
              "id": 3794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "8170:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8170:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8169:6:14"
            },
            "scope": 3807,
            "src": "8060:188:14",
            "stateMutability": "view",
            "superFunction": 7087,
            "visibility": "private"
          }
        ],
        "scope": 3808,
        "src": "412:7838:14"
      }
    ],
    "src": "0:8251:14"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.272Z"
}