{
  "contractName": "CertifiedFile",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hash",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "size",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "createdAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signaturit",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "userContractAddress",
          "type": "address"
        },
        {
          "name": "fileId",
          "type": "string"
        },
        {
          "name": "fileHash",
          "type": "string"
        },
        {
          "name": "fileCreatedAt",
          "type": "uint256"
        },
        {
          "name": "fileSize",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyEvent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610854380380610854833981018060405260c081101561003357600080fd5b815160208301516040840180519294919382019264010000000081111561005957600080fd5b8201602081018481111561006c57600080fd5b815164010000000081118282018710171561008657600080fd5b505092919060200180516401000000008111156100a257600080fd5b820160208101848111156100b557600080fd5b81516401000000008111828201871017156100cf57600080fd5b50506020828101516040909301516007805433600160a060020a03199182161790915560088054909116600160a060020a038b16179055865192955092935061011d91600991870190610160565b50825161013190600a906020860190610160565b50600c55600b555050600d8054600160a060020a031916600160a060020a0392909216919091179055506101fb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a157805160ff19168380011785556101ce565b828001600101855582156101ce579182015b828111156101ce5782518255916020019190600101906101b3565b506101da9291506101de565b5090565b6101f891905b808211156101da57600081556001016101e4565b90565b61064a8061020a6000396000f3fe6080604052600436106100745763ffffffff60e060020a60003504166309bd5a6081146100795780635000596b146101035780638da5cb5b14610134578063949d225d14610149578063af640d0f14610170578063cf09e0d014610185578063de3bb6de1461019a578063f9b53335146101b1575b600080fd5b34801561008557600080fd5b5061008e6101c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c85781810151838201526020016100b0565b50505050905090810190601f1680156100f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561010f57600080fd5b50610118610254565b60408051600160a060020a039092168252519081900360200190f35b34801561014057600080fd5b50610118610263565b34801561015557600080fd5b5061015e610272565b60408051918252519081900360200190f35b34801561017c57600080fd5b5061008e610278565b34801561019157600080fd5b5061015e6102d3565b3480156101a657600080fd5b506101af6102d9565b005b3480156101bd57600080fd5b5061011861060f565b600a805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561024c5780601f106102215761010080835404028352916020019161024c565b820191906000526020600020905b81548152906001019060200180831161022f57829003601f168201915b505050505081565b600d54600160a060020a031681565b600854600160a060020a031681565b600c5481565b6009805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561024c5780601f106102215761010080835404028352916020019161024c565b600b5481565b600754600160a060020a03163314610356576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c79205369676e617475726974206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000805b600d54604080518082018252601881527f6365727469666965642d66696c652d6e6f74696669657273000000000000000060208201908152825160e260020a633ce8989d0281526024810186905260048101938452825160448201528251600160a060020a039095169463f3a26274948793909283926064909101919080838360005b838110156103f55781810151838201526020016103dd565b50505050905090810190601f1680156104225780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561044057600080fd5b505afa158015610454573d6000803e3d6000fd5b505050506040513d602081101561046a57600080fd5b50519150600101600160a060020a038216156105fb57604080518082018252601f81527f6365727469666965645f66696c652e636f6e74726163742e6372656174656400602082019081528251306044820181905260248201948552835160648301528351600160a060020a0388169591939192839260849091019180838360005b838110156105045781810151838201526020016104ec565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106105905780518252601f199092019160209182019101610571565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b5050505b600160a060020a038216151561035a575050565b600754600160a060020a03168156fea165627a7a723058208165f6a820378526a98021c2cc88d1d3965ebc8eb9d696ab4921bce4da5309540029",
  "deployedBytecode": "0x6080604052600436106100745763ffffffff60e060020a60003504166309bd5a6081146100795780635000596b146101035780638da5cb5b14610134578063949d225d14610149578063af640d0f14610170578063cf09e0d014610185578063de3bb6de1461019a578063f9b53335146101b1575b600080fd5b34801561008557600080fd5b5061008e6101c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c85781810151838201526020016100b0565b50505050905090810190601f1680156100f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561010f57600080fd5b50610118610254565b60408051600160a060020a039092168252519081900360200190f35b34801561014057600080fd5b50610118610263565b34801561015557600080fd5b5061015e610272565b60408051918252519081900360200190f35b34801561017c57600080fd5b5061008e610278565b34801561019157600080fd5b5061015e6102d3565b3480156101a657600080fd5b506101af6102d9565b005b3480156101bd57600080fd5b5061011861060f565b600a805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561024c5780601f106102215761010080835404028352916020019161024c565b820191906000526020600020905b81548152906001019060200180831161022f57829003601f168201915b505050505081565b600d54600160a060020a031681565b600854600160a060020a031681565b600c5481565b6009805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561024c5780601f106102215761010080835404028352916020019161024c565b600b5481565b600754600160a060020a03163314610356576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c79205369676e617475726974206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000805b600d54604080518082018252601881527f6365727469666965642d66696c652d6e6f74696669657273000000000000000060208201908152825160e260020a633ce8989d0281526024810186905260048101938452825160448201528251600160a060020a039095169463f3a26274948793909283926064909101919080838360005b838110156103f55781810151838201526020016103dd565b50505050905090810190601f1680156104225780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561044057600080fd5b505afa158015610454573d6000803e3d6000fd5b505050506040513d602081101561046a57600080fd5b50519150600101600160a060020a038216156105fb57604080518082018252601f81527f6365727469666965645f66696c652e636f6e74726163742e6372656174656400602082019081528251306044820181905260248201948552835160648301528351600160a060020a0388169591939192839260849091019180838360005b838110156105045781810151838201526020016104ec565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106105905780518252601f199092019160209182019101610571565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b5050505b600160a060020a038216151561035a575050565b600754600160a060020a03168156fea165627a7a723058208165f6a820378526a98021c2cc88d1d3965ebc8eb9d696ab4921bce4da5309540029",
  "sourceMap": "158:1712:5:-;;;749:452;8:9:-1;5:2;;;30:1;27;20:12;5:2;749:452:5;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;749:452:5;;;;;;;;;;;;;;;;;;19:11:-1;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;0:372;;749:452:5;;;;;;;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;;749:452:5;;;;;;;;;;970:10;:23;;983:10;-1:-1:-1;;;;;;970:23:5;;;;;;;1003:5;:14;;;;;-1:-1:-1;;;;;1003:14:5;;;;;1028:11;;749:452;;-1:-1:-1;749:452:5;;-1:-1:-1;1028:11:5;;:2;;:11;;;;:::i;:::-;-1:-1:-1;1049:15:5;;;;:4;;:15;;;;;:::i;:::-;-1:-1:-1;1074:4:5;:15;1099:9;:25;-1:-1:-1;;1135:12:5;:59;;-1:-1:-1;;;;;;1135:59:5;-1:-1:-1;;;;;1135:59:5;;;;;;;;;;-1:-1:-1;158:1712:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;158:1712:5;;;-1:-1:-1;158:1712:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "158:1712:5:-;;;;;;;;;-1:-1:-1;;;158:1712:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;445:18:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;445:18:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;520:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;520:43:5;;;;;;;;-1:-1:-1;;;;;520:43:5;;;;;;;;;;;;;;244:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;244:20:5;;;;497:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;497:16:5;;;;;;;;;;;;;;;;;;;;423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;423:16:5;;;;470:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;470:21:5;;;;1207:661;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1207:661:5;;;;;;213:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;213:25:5;;;;445:18;;;;;;;;;;;;;;;-1:-1:-1;;445:18:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;520:43::-;;;-1:-1:-1;;;;;520:43:5;;:::o;244:20::-;;;-1:-1:-1;;;;;244:20:5;;:::o;497:16::-;;;;:::o;423:::-;;;;;;;;;;;;;;;-1:-1:-1;;423:16:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:21;;;;:::o;1207:661::-;641:10;;-1:-1:-1;;;;;641:10:5;627;:24;606:118;;;;;-1:-1:-1;;;;;606:118:5;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;606:118:5;;;;;;;;;;;;;;;1283:24;;1354:508;1390:12;;1428:13;;;;;;;;;;;;;;;;;;1390:71;;-1:-1:-1;;;;;1390:71:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1390:12:5;;;;:37;;1443:17;;1390:71;;;;;;;;;1428:13;1390:71;;1428:13;1390: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;1390:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1390:71:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1390:71:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1390:71:5;;-1:-1:-1;1475:19:5;;-1:-1:-1;;;;;1513:30:5;;;1509:303;;1705:13;;;;;;;;;;;;;;;;;;1606:173;;1752:4;1606:173;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1563:21:5;;;1752:4;;1606:173;;;;;;;;;;;1705:13;-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;1606:173:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1606:173:5;;;-1:-1:-1;;26:21;;;22:32;6:49;;1606:173:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;1563:234:5;;;;1606:173;;-1:-1:-1;1563:234:5;-1:-1:-1;1563:234:5;;-1:-1:-1;25:18;-1:-1;1563:234:5;;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;;;1563:234:5;;;;;;;;;;;;;;;;;;;;;;;;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;;1563:234:5;;1509:303;-1:-1:-1;;;;;1830:30:5;;;;1354:508;;735:1;;1207:661::o;213:25::-;;;-1:-1:-1;;;;;213:25:5;;:::o",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 747.382\n*/\n\nimport \"./interfaces/CertifiedFileInterface.sol\";\nimport \"./interfaces/SignaturitUserInterface.sol\";\n\n\ncontract CertifiedFile is CertifiedFileInterface {\n    address public signaturit;\n    address public owner;\n\n    string constant private CREATED_EVENT = \"certified_file.contract.created\";\n    string constant private NOTIFIERS_KEY = \"certified-file-notifiers\";\n\n    string public id;\n    string public hash;\n\n    uint public createdAt;\n    uint public size;\n\n    SignaturitUserInterface public userContract;\n\n    modifier signaturitOnly() {\n        require(\n            msg.sender == signaturit,\n            \"Only Signaturit account can perform this action\"\n        );\n\n        _;\n    }\n\n    constructor(\n        address _owner,\n        address userContractAddress,\n        string memory fileId,\n        string memory fileHash,\n        uint fileCreatedAt,\n        uint fileSize\n    )\n        public\n    {\n        signaturit = msg.sender;\n        owner = _owner;\n\n        id = fileId;\n        hash = fileHash;\n        size = fileSize;\n        createdAt = fileCreatedAt;\n\n        userContract = SignaturitUserInterface(userContractAddress);\n    }\n\n    function notifyEvent ()\n        public\n        signaturitOnly\n    {\n        address contractToNofify;\n        uint notificationIndex = 0;\n\n        do {\n            contractToNofify = userContract.getAddressArrayAttribute(NOTIFIERS_KEY, notificationIndex);\n            ++notificationIndex;\n\n            if (contractToNofify != address(0)) {\n                contractToNofify.call(\n                    abi.encodeWithSignature(\n                        \"notify(string,address)\",\n                        CREATED_EVENT,\n                        address(this)\n                    )\n                );\n            }\n        } while (contractToNofify != address(0));\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFile.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFile.sol",
    "exportedSymbols": {
      "CertifiedFile": [
        1241
      ]
    },
    "id": 1242,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1106,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/CertifiedFileInterface.sol",
        "file": "./interfaces/CertifiedFileInterface.sol",
        "id": 1107,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 6759,
        "src": "55:49:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 1108,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 7252,
        "src": "105:50:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1109,
              "name": "CertifiedFileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6758,
              "src": "184:22:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CertifiedFileInterface_$6758",
                "typeString": "contract CertifiedFileInterface"
              }
            },
            "id": 1110,
            "nodeType": "InheritanceSpecifier",
            "src": "184:22:5"
          }
        ],
        "contractDependencies": [
          6758
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1241,
        "linearizedBaseContracts": [
          1241,
          6758
        ],
        "name": "CertifiedFile",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1112,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "213:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1111,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "213:7:5",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1114,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "244:20:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1113,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "244:7:5",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1117,
            "name": "CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "271:73:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1115,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "271:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965645f66696c652e636f6e74726163742e63726561746564",
              "id": 1116,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "311:33:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6ea586b01b93169892b084e656c4efd004082d61c22d49fa7046dacfea77c0c8",
                "typeString": "literal_string \"certified_file.contract.created\""
              },
              "value": "certified_file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1120,
            "name": "NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "350:66:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1118,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "350:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965642d66696c652d6e6f74696669657273",
              "id": 1119,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "390:26:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4c035f1ebcfc258c72fa01905bcc3cb43341138bfce84b3d302a119952191b84",
                "typeString": "literal_string \"certified-file-notifiers\""
              },
              "value": "certified-file-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1122,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "423:16:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1121,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "423:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1124,
            "name": "hash",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "445:18:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1123,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "445:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1126,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "470:21:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1125,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "470:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1128,
            "name": "size",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "497:16:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1127,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "497:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1130,
            "name": "userContract",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "520:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1129,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "520:23:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1141,
              "nodeType": "Block",
              "src": "596:147:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1133,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "627:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "627:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1135,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1112,
                          "src": "641:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "627:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "665:49:5",
                        "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": 1132,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "606:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "606:118:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1139,
                  "nodeType": "ExpressionStatement",
                  "src": "606:118:5"
                },
                {
                  "id": 1140,
                  "nodeType": "PlaceholderStatement",
                  "src": "735:1:5"
                }
              ]
            },
            "documentation": null,
            "id": 1142,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1131,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "593:2:5"
            },
            "src": "570:173:5",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1188,
              "nodeType": "Block",
              "src": "960:241:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1157,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1112,
                      "src": "970:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "983:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "983:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "970:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1161,
                  "nodeType": "ExpressionStatement",
                  "src": "970:23:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1162,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1114,
                      "src": "1003:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1163,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1144,
                      "src": "1011:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1003:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1165,
                  "nodeType": "ExpressionStatement",
                  "src": "1003:14:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1166,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1122,
                      "src": "1028:2:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1167,
                      "name": "fileId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1148,
                      "src": "1033:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1028:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1169,
                  "nodeType": "ExpressionStatement",
                  "src": "1028:11:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1170,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1124,
                      "src": "1049:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1171,
                      "name": "fileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1150,
                      "src": "1056:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1049:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1173,
                  "nodeType": "ExpressionStatement",
                  "src": "1049:15:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1174,
                      "name": "size",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1128,
                      "src": "1074:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1175,
                      "name": "fileSize",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1154,
                      "src": "1081:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1074:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1177,
                  "nodeType": "ExpressionStatement",
                  "src": "1074:15:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1178,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1126,
                      "src": "1099:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1179,
                      "name": "fileCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1152,
                      "src": "1111:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1099:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1181,
                  "nodeType": "ExpressionStatement",
                  "src": "1099:25:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1182,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1130,
                      "src": "1135:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "userContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "1174:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1183,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1150:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 1185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1150:44:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1135:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 1187,
                  "nodeType": "ExpressionStatement",
                  "src": "1135:59:5"
                }
              ]
            },
            "documentation": null,
            "id": 1189,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1144,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "770:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1143,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1146,
                  "name": "userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "794:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1145,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "794:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1148,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "831:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1150,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "861:22:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "861:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1152,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "893:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1151,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "893:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1154,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "921:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "921:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "760:180:5"
            },
            "returnParameters": {
              "id": 1156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "960:0:5"
            },
            "scope": 1241,
            "src": "749:452:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1239,
              "nodeType": "Block",
              "src": "1273:595:5",
              "statements": [
                {
                  "assignments": [
                    1195
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1195,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 1239,
                      "src": "1283:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1194,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1283:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1196,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1283:24:5"
                },
                {
                  "assignments": [
                    1198
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1198,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1239,
                      "src": "1317:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1197,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1317:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1200,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1342:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1317:26:5"
                },
                {
                  "body": {
                    "id": 1232,
                    "nodeType": "Block",
                    "src": "1357:465:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1201,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1195,
                            "src": "1371:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1204,
                                "name": "NOTIFIERS_KEY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1120,
                                "src": "1428:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1205,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1198,
                                "src": "1443:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1202,
                                "name": "userContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1130,
                                "src": "1390:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 1203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "1390:37:5",
                              "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": 1206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1390:71:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1371:90:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1208,
                        "nodeType": "ExpressionStatement",
                        "src": "1371:90:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "1475:19:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1209,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1198,
                            "src": "1477:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1211,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:19:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1212,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1195,
                            "src": "1513:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1541:1:5",
                                "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": 1213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1533:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1533:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1513:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1231,
                        "nodeType": "IfStatement",
                        "src": "1509:303:5",
                        "trueBody": {
                          "id": 1230,
                          "nodeType": "Block",
                          "src": "1545:267:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 1222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1655:24:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1223,
                                        "name": "CREATED_EVENT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1117,
                                        "src": "1705:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1225,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7349,
                                            "src": "1752:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                              "typeString": "contract CertifiedFile"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                              "typeString": "contract CertifiedFile"
                                            }
                                          ],
                                          "id": 1224,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1744:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 1226,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1744:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1220,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "1606:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1606:23:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 1227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1606:173:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1217,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1195,
                                    "src": "1563:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 1219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1563:21:5",
                                  "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": 1228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1563:234:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 1229,
                              "nodeType": "ExpressionStatement",
                              "src": "1563:234:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1233,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1195,
                      "src": "1830:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1858:1:5",
                          "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": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1850:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1850:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1830:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1238,
                  "nodeType": "DoWhileStatement",
                  "src": "1354:508:5"
                }
              ]
            },
            "documentation": null,
            "id": 1240,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1192,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1191,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1142,
                  "src": "1254:14:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1254:14:5"
              }
            ],
            "name": "notifyEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1190,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1228:2:5"
            },
            "returnParameters": {
              "id": 1193,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1273:0:5"
            },
            "scope": 1241,
            "src": "1207:661:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1242,
        "src": "158:1712:5"
      }
    ],
    "src": "0:1871:5"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFile.sol",
    "exportedSymbols": {
      "CertifiedFile": [
        1241
      ]
    },
    "id": 1242,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1106,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/CertifiedFileInterface.sol",
        "file": "./interfaces/CertifiedFileInterface.sol",
        "id": 1107,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 6759,
        "src": "55:49:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 1108,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 7252,
        "src": "105:50:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1109,
              "name": "CertifiedFileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6758,
              "src": "184:22:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CertifiedFileInterface_$6758",
                "typeString": "contract CertifiedFileInterface"
              }
            },
            "id": 1110,
            "nodeType": "InheritanceSpecifier",
            "src": "184:22:5"
          }
        ],
        "contractDependencies": [
          6758
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1241,
        "linearizedBaseContracts": [
          1241,
          6758
        ],
        "name": "CertifiedFile",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1112,
            "name": "signaturit",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "213:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1111,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "213:7:5",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1114,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "244:20:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1113,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "244:7:5",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1117,
            "name": "CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "271:73:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1115,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "271:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965645f66696c652e636f6e74726163742e63726561746564",
              "id": 1116,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "311:33:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6ea586b01b93169892b084e656c4efd004082d61c22d49fa7046dacfea77c0c8",
                "typeString": "literal_string \"certified_file.contract.created\""
              },
              "value": "certified_file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1120,
            "name": "NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "350:66:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1118,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "350:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965642d66696c652d6e6f74696669657273",
              "id": 1119,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "390:26:5",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4c035f1ebcfc258c72fa01905bcc3cb43341138bfce84b3d302a119952191b84",
                "typeString": "literal_string \"certified-file-notifiers\""
              },
              "value": "certified-file-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1122,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "423:16:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1121,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "423:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1124,
            "name": "hash",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "445:18:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1123,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "445:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1126,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "470:21:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1125,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "470:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1128,
            "name": "size",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "497:16:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1127,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "497:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1130,
            "name": "userContract",
            "nodeType": "VariableDeclaration",
            "scope": 1241,
            "src": "520:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1129,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "520:23:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1141,
              "nodeType": "Block",
              "src": "596:147:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1133,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "627:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "627:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1135,
                          "name": "signaturit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1112,
                          "src": "641:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "627:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79205369676e617475726974206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "665:49:5",
                        "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": 1132,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "606:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "606:118:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1139,
                  "nodeType": "ExpressionStatement",
                  "src": "606:118:5"
                },
                {
                  "id": 1140,
                  "nodeType": "PlaceholderStatement",
                  "src": "735:1:5"
                }
              ]
            },
            "documentation": null,
            "id": 1142,
            "name": "signaturitOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1131,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "593:2:5"
            },
            "src": "570:173:5",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1188,
              "nodeType": "Block",
              "src": "960:241:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1157,
                      "name": "signaturit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1112,
                      "src": "970:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "983:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "983:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "970:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1161,
                  "nodeType": "ExpressionStatement",
                  "src": "970:23:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1162,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1114,
                      "src": "1003:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1163,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1144,
                      "src": "1011:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1003:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1165,
                  "nodeType": "ExpressionStatement",
                  "src": "1003:14:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1166,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1122,
                      "src": "1028:2:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1167,
                      "name": "fileId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1148,
                      "src": "1033:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1028:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1169,
                  "nodeType": "ExpressionStatement",
                  "src": "1028:11:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1170,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1124,
                      "src": "1049:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1171,
                      "name": "fileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1150,
                      "src": "1056:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1049:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1173,
                  "nodeType": "ExpressionStatement",
                  "src": "1049:15:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1174,
                      "name": "size",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1128,
                      "src": "1074:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1175,
                      "name": "fileSize",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1154,
                      "src": "1081:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1074:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1177,
                  "nodeType": "ExpressionStatement",
                  "src": "1074:15:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1178,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1126,
                      "src": "1099:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1179,
                      "name": "fileCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1152,
                      "src": "1111:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1099:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1181,
                  "nodeType": "ExpressionStatement",
                  "src": "1099:25:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1182,
                      "name": "userContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1130,
                      "src": "1135:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "userContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "1174:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1183,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "1150:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 1185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1150:44:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "1135:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 1187,
                  "nodeType": "ExpressionStatement",
                  "src": "1135:59:5"
                }
              ]
            },
            "documentation": null,
            "id": 1189,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1144,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "770:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1143,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1146,
                  "name": "userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "794:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1145,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "794:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1148,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "831:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1150,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "861:22:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "861:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1152,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "893:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1151,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "893:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1154,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 1189,
                  "src": "921:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "921:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "760:180:5"
            },
            "returnParameters": {
              "id": 1156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "960:0:5"
            },
            "scope": 1241,
            "src": "749:452:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1239,
              "nodeType": "Block",
              "src": "1273:595:5",
              "statements": [
                {
                  "assignments": [
                    1195
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1195,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 1239,
                      "src": "1283:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1194,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1283:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1196,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1283:24:5"
                },
                {
                  "assignments": [
                    1198
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1198,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1239,
                      "src": "1317:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1197,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1317:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1200,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1342:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1317:26:5"
                },
                {
                  "body": {
                    "id": 1232,
                    "nodeType": "Block",
                    "src": "1357:465:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1201,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1195,
                            "src": "1371:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1204,
                                "name": "NOTIFIERS_KEY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1120,
                                "src": "1428:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1205,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1198,
                                "src": "1443:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1202,
                                "name": "userContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1130,
                                "src": "1390:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 1203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "1390:37:5",
                              "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": 1206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1390:71:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1371:90:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1208,
                        "nodeType": "ExpressionStatement",
                        "src": "1371:90:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "1475:19:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1209,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1198,
                            "src": "1477:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1211,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:19:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1212,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1195,
                            "src": "1513:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1541:1:5",
                                "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": 1213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1533:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1533:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1513:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1231,
                        "nodeType": "IfStatement",
                        "src": "1509:303:5",
                        "trueBody": {
                          "id": 1230,
                          "nodeType": "Block",
                          "src": "1545:267:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 1222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1655:24:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1223,
                                        "name": "CREATED_EVENT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1117,
                                        "src": "1705:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1225,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7349,
                                            "src": "1752:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                              "typeString": "contract CertifiedFile"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                              "typeString": "contract CertifiedFile"
                                            }
                                          ],
                                          "id": 1224,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1744:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 1226,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1744:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1220,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "1606:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1606:23:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 1227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1606:173:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1217,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1195,
                                    "src": "1563:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 1219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1563:21:5",
                                  "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": 1228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1563:234:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 1229,
                              "nodeType": "ExpressionStatement",
                              "src": "1563:234:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1233,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1195,
                      "src": "1830:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1858:1:5",
                          "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": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1850:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1850:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1830:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1238,
                  "nodeType": "DoWhileStatement",
                  "src": "1354:508:5"
                }
              ]
            },
            "documentation": null,
            "id": 1240,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1192,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1191,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1142,
                  "src": "1254:14:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1254:14:5"
              }
            ],
            "name": "notifyEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1190,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1228:2:5"
            },
            "returnParameters": {
              "id": 1193,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1273:0:5"
            },
            "scope": 1241,
            "src": "1207:661:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1242,
        "src": "158:1712:5"
      }
    ],
    "src": "0:1871:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.242Z"
}