{
  "contractName": "CertifiedFileAggregator",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "userContract",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "aggregatorName",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "notifiersKey",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signaturit",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_userContractAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "string"
        }
      ],
      "name": "getCertifiedFileById",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getCertifiedFile",
      "outputs": [
        {
          "name": "addr",
          "type": "address"
        },
        {
          "name": "more",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "eventType",
          "type": "string"
        },
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "notify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051602080610b448339810180604052602081101561003057600080fd5b5051604080518082018252601981527f6365727469666965642d66696c652d61676772656761746f720000000000000060208281019182528351808501909452601884527f6365727469666965642d66696c652d6e6f7469666965727300000000000000009084015260018054600160a060020a0319163317905581518493916100bd91600291906102e9565b5080516100d19060039060208401906102e9565b5060008054600160a060020a031916600160a060020a038581169190911791829055604080517f34311d8e0000000000000000000000000000000000000000000000000000000081523060248201819052600482019283526002805461010060018216150260001901168190046044840181905295909416946334311d8e949391928291606490910190859080156101aa5780601f1061017f576101008083540402835291602001916101aa565b820191906000526020600020905b81548152906001019060200180831161018d57829003601f168201915b50509350505050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b5050600054604080517fd661f878000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352600380546002600019600183161561010002019091160460448401819052600160a060020a03909516965063d661f8789550939092918291606490910190859080156102a75780601f1061027c576101008083540402835291602001916102a7565b820191906000526020600020905b81548152906001019060200180831161028a57829003601f168201915b50509350505050600060405180830381600087803b1580156102c857600080fd5b505af11580156102dc573d6000803e3d6000fd5b5050505050505050610384565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061032a57805160ff1916838001178555610357565b82800160010185558215610357579182015b8281111561035757825182559160200191906001019061033c565b50610363929150610367565b5090565b61038191905b80821115610363576000815560010161036d565b90565b6107b1806103936000396000f3fe6080604052600436106100745763ffffffff60e060020a60003504166306661abd81146100795780631892ae1b146100a05780635000596b1461016d578063984eec3714610182578063c50679fc1461020c578063d9026ed114610259578063e71e65761461026e578063f9b533351461032c575b600080fd5b34801561008557600080fd5b5061008e610341565b60408051918252519081900360200190f35b3480156100ac57600080fd5b50610151600480360360208110156100c357600080fd5b810190602081018135602060020a8111156100dd57600080fd5b8201836020820111156100ef57600080fd5b803590602001918460018302840111602060020a8311171561011057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610347945050505050565b60408051600160a060020a039092168252519081900360200190f35b34801561017957600080fd5b50610151610372565b34801561018e57600080fd5b50610197610381565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b506102366004803603602081101561022f57600080fd5b503561040c565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561026557600080fd5b50610197610483565b34801561027a57600080fd5b5061032a6004803603604081101561029157600080fd5b810190602081018135602060020a8111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460018302840111602060020a831117156102de57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506104de9050565b005b34801561033857600080fd5b506101516106e4565b60055490565b600080610353836106f3565b600090815260046020526040902054600160a060020a03169392505050565b600054600160a060020a031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b505050505081565b6005805460009182916001850181119183918690811061042857fe5b60009182526020808320909101548083526004909152604090912054909150600160a060020a03161561047657600090815260046020526040902054600160a060020a03169250905061047e565b506000925090505b915091565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104045780601f106103d957610100808354040283529160200191610404565b600154600160a060020a0316321461055b576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c79205369676e617475726974206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000610566836106f3565b9050806105a76040805190810160405280601f81526020017f6365727469666965645f66696c652e636f6e74726163742e63726561746564008152506106f3565b14156106df576000829050600061068082600160a060020a031663af640d0f6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561063057600080fd5b810190808051602060020a81111561064757600080fd5b8201602081018481111561065a57600080fd5b8151602060020a81118282018710171561067357600080fd5b50509291905050506106f3565b60058054600181019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00181905560009081526004602052604090208054600160a060020a031916600160a060020a039390931692909217909155505b505050565b600154600160a060020a031681565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561073657818101518382015260200161071e565b50505050905090810190601f1680156107635780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120905091905056fea165627a7a72305820f37146da98d04d0284483b879cf8de7dc7a5bb8c1f3286a1c9d587a83b5197e90029",
  "deployedBytecode": "0x6080604052600436106100745763ffffffff60e060020a60003504166306661abd81146100795780631892ae1b146100a05780635000596b1461016d578063984eec3714610182578063c50679fc1461020c578063d9026ed114610259578063e71e65761461026e578063f9b533351461032c575b600080fd5b34801561008557600080fd5b5061008e610341565b60408051918252519081900360200190f35b3480156100ac57600080fd5b50610151600480360360208110156100c357600080fd5b810190602081018135602060020a8111156100dd57600080fd5b8201836020820111156100ef57600080fd5b803590602001918460018302840111602060020a8311171561011057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610347945050505050565b60408051600160a060020a039092168252519081900360200190f35b34801561017957600080fd5b50610151610372565b34801561018e57600080fd5b50610197610381565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b506102366004803603602081101561022f57600080fd5b503561040c565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561026557600080fd5b50610197610483565b34801561027a57600080fd5b5061032a6004803603604081101561029157600080fd5b810190602081018135602060020a8111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460018302840111602060020a831117156102de57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506104de9050565b005b34801561033857600080fd5b506101516106e4565b60055490565b600080610353836106f3565b600090815260046020526040902054600160a060020a03169392505050565b600054600160a060020a031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b505050505081565b6005805460009182916001850181119183918690811061042857fe5b60009182526020808320909101548083526004909152604090912054909150600160a060020a03161561047657600090815260046020526040902054600160a060020a03169250905061047e565b506000925090505b915091565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104045780601f106103d957610100808354040283529160200191610404565b600154600160a060020a0316321461055b576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c79205369676e617475726974206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000610566836106f3565b9050806105a76040805190810160405280601f81526020017f6365727469666965645f66696c652e636f6e74726163742e63726561746564008152506106f3565b14156106df576000829050600061068082600160a060020a031663af640d0f6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561063057600080fd5b810190808051602060020a81111561064757600080fd5b8201602081018481111561065a57600080fd5b8151602060020a81118282018710171561067357600080fd5b50509291905050506106f3565b60058054600181019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00181905560009081526004602052604090208054600160a060020a031916600160a060020a039390931692909217909155505b505050565b600154600160a060020a031681565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561073657818101518382015260200161071e565b50505050905090810190601f1680156107635780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120905091905056fea165627a7a72305820f37146da98d04d0284483b879cf8de7dc7a5bb8c1f3286a1c9d587a83b5197e90029",
  "sourceMap": "194:1909:6:-;;;479:226;8:9:-1;5:2;;;30:1;27;20:12;5:2;479:226:6;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;479:226:6;436:554:0;;;;;;;;;;;;479:226:6;436:554:0;;;;;;;;;;;;;;;;;;;;;;587:10;:23;;-1:-1:-1;;;;;;587:23:0;600:10;587:23;;;621:33;;479:226:6;;436:554:0;621:33;;:14;;436:554;621:33;:::i;:::-;-1:-1:-1;664:30:0;;;;:12;;:30;;;;;:::i;:::-;-1:-1:-1;705:12:0;:59;;-1:-1:-1;;;;;;705:59:0;-1:-1:-1;;;;;705:59:0;;;;;;;;;;;775:97;;;;;;857:4;775:97;;;;;;;;;;;;821:14;775:97;;705:59;-1:-1:-1;775:97:0;;;;-1:-1:-1;;775:97:0;;;;;;;;;;;:12;;;;;:32;;821:14;857:4;;775:97;;;;;;;821:14;;775:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;775:97:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;883:12:0;;:100;;;;;;968:4;883:100;;;;;;;;;;;;934:12;883:100;;;-1:-1:-1;;883:12:0;:100;;;:12;:100;;;;;;;;;;;;-1:-1:-1;;;;;883:12:0;;;;-1:-1:-1;883:37:0;;-1:-1:-1;934:12:0;968:4;;883:100;;;;;;;;934:12;;883:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;883:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;883:100:0;;;;436:554;;;479:226:6;194:1909;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;194:1909:6;;;-1:-1:-1;194:1909:6;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "194:1909:6:-;;;;;;;;;-1:-1:-1;;;194:1909:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1467:120:6;;;;;;;;;;;;;;;;;;;;711:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:225:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;711:225:6;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;711:225:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;711:225:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;711:225:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;711:225:6;;-1:-1:-1;711:225:6;;-1:-1:-1;;;;;711:225:6;;;;;-1:-1:-1;;;;;711:225:6;;;;;;;;;;;;;;108:43:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;108:43:0;;;;190:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;190:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:519:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;942:519:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;942:519:6;;;;;;;-1:-1:-1;;;;;942:519:6;;;;;;;;;;;;;;;;;;;;;224:26:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;224:26:0;;;;1593:508:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1593:508:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1593:508:6;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1593:508:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1593:508:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1593:508:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1593:508:6;;-1:-1:-1;;;1593:508:6;;-1:-1:-1;;;;;1593:508:6;;-1:-1:-1;1593:508:6;;-1:-1:-1;1593:508:6;;;158:25:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;158:25:0;;;;1467:120:6;1556:17;:24;1467:120;:::o;711:225::-;818:7;841:17;861:16;874:2;861:12;:16::i;:::-;903:25;;;;:14;:25;;;;;;-1:-1:-1;;;;;903:25:6;;711:225;-1:-1:-1;;;711:225:6:o;108:43:0:-;;;-1:-1:-1;;;;;108:43:0;;:::o;190:28::-;;;;;;;;;;;;;;-1:-1:-1;;190:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;942:519:6:-;1103:17;:24;;1039:12;;;;1099:1;1091:9;;:36;-1:-1:-1;1091:36:6;1039:12;;1091:5;;1163:24;;;;;;;;;;;;;;;;;;1209:31;;;:14;:31;;;;;;;;1163:24;;-1:-1:-1;;;;;;1209:31:6;1201:54;1197:187;;1304:31;;;;:14;:31;;;;;;-1:-1:-1;;;;;1304:31:6;;-1:-1:-1;1354:5:6;-1:-1:-1;1271:102:6;;1197:187;-1:-1:-1;1423:1:6;;-1:-1:-1;1439:5:6;-1:-1:-1;942:519:6;;;;:::o;224:26:0:-;;;;;;;;;;;;;;;-1:-1:-1;;224:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1593:508:6;328:10:0;;-1:-1:-1;;;;;328:10:0;315:9;:23;294:117;;;;;-1:-1:-1;;;;;294:117:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;294:117:0;;;;;;;;;;;;;;;1722:24:6;1749:23;1762:9;1749:12;:23::i;:::-;1722:50;;1833:16;1787:42;1800:28;;;;;;;;;;;;;;;;;;1787:12;:42::i;:::-;:62;1783:312;;;1865:27;1909:4;1865:49;;1929:17;1949:32;1962:13;-1:-1:-1;;;;;1962:16:6;;:18;;;;;-1:-1:-1;;;1962:18:6;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1962:18:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1962:18:6;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1962:18:6;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1962:18:6;;;;;;-1:-1:-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;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;1962:18:6;;;;;;1949:12;:32::i;:::-;1996:17;27:10:-1;;39:1;23:18;;45:23;;;1996:33:6;;;;;-1:-1:-1;2043:25:6;;;:14;1996:33;2043:25;;;;:41;;-1:-1:-1;;;;;;2043:41:6;-1:-1:-1;;;;;2043:41:6;;;;;;;;;;;-1:-1:-1;1783:312:6;422:1:0;1593:508:6;;:::o;158:25:0:-;;;-1:-1:-1;;;;;158:25:0;;:::o;342:182:31:-;439:7;503:3;492:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;492:15:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;492:15:31;;;469:48;;;;;;462:55;;342:182;;;:::o",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 785.379\n*/\n\nimport \"./interfaces/NotifierInterface.sol\";\nimport \"./BaseAggregator.sol\";\nimport \"./CertifiedFile.sol\";\nimport \"./libraries/Utils.sol\";\n\ncontract CertifiedFileAggregator is\n    NotifierInterface,\n    BaseAggregator\n{\n    string constant private CERTIFIED_FILE_CREATED_EVENT = \"certified_file.contract.created\";\n\n    mapping (bytes32 => CertifiedFile) private certifiedFiles;\n\n    bytes32[] private certifiedFilesIds;\n\n    constructor (\n        address _userContractAddress\n    )\n        public\n        BaseAggregator(\n            _userContractAddress,\n            \"certified-file-aggregator\",\n            \"certified-file-notifiers\"\n        )\n    {}\n\n    function getCertifiedFileById(\n        string memory id\n    )\n        public\n        view\n        returns (address)\n    {\n        bytes32 bytes32id = Utils.keccak(id);\n\n        return address(certifiedFiles[bytes32id]);\n    }\n\n    function getCertifiedFile(\n        uint index\n    )\n        public\n        view\n        returns (address addr, bool more)\n    {\n        bool _more = index + 1 < certifiedFilesIds.length;\n        bytes32 certifiedFileId = certifiedFilesIds[index];\n        if (address(certifiedFiles[certifiedFileId]) != address(0)) {\n            return (\n                address(certifiedFiles[certifiedFileId]),\n                _more\n            );\n        }\n\n        return (\n            address(0),\n            _more\n        );\n    }\n\n    function count()\n        public\n        view\n        returns (uint)\n    {\n        return certifiedFilesIds.length;\n    }\n\n    function notify(\n        string memory eventType,\n        address addr\n    )\n        public\n        signaturitOnly\n    {\n        bytes32 bytes32eventType = Utils.keccak(eventType);\n\n        if (Utils.keccak(CERTIFIED_FILE_CREATED_EVENT) == bytes32eventType) {\n            CertifiedFile certifiedFile = CertifiedFile(addr);\n\n            bytes32 bytes32id = Utils.keccak(certifiedFile.id());\n\n            certifiedFilesIds.push(bytes32id);\n            certifiedFiles[bytes32id] = certifiedFile;\n        }\n    }\n}",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFileAggregator.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFileAggregator.sol",
    "exportedSymbols": {
      "CertifiedFileAggregator": [
        1405
      ]
    },
    "id": 1406,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1243,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/NotifierInterface.sol",
        "file": "./interfaces/NotifierInterface.sol",
        "id": 1244,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 6928,
        "src": "55:44:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/BaseAggregator.sol",
        "file": "./BaseAggregator.sol",
        "id": 1245,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 71,
        "src": "100:30:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFile.sol",
        "file": "./CertifiedFile.sol",
        "id": 1246,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 1242,
        "src": "131:29:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 1247,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 7290,
        "src": "161:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1248,
              "name": "NotifierInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6927,
              "src": "234:17:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                "typeString": "contract NotifierInterface"
              }
            },
            "id": 1249,
            "nodeType": "InheritanceSpecifier",
            "src": "234:17:6"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1250,
              "name": "BaseAggregator",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 70,
              "src": "257:14:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseAggregator_$70",
                "typeString": "contract BaseAggregator"
              }
            },
            "id": 1251,
            "nodeType": "InheritanceSpecifier",
            "src": "257:14:6"
          }
        ],
        "contractDependencies": [
          70,
          6927
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1405,
        "linearizedBaseContracts": [
          1405,
          70,
          6927
        ],
        "name": "CertifiedFileAggregator",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1254,
            "name": "CERTIFIED_FILE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "278:88:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1252,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "278:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965645f66696c652e636f6e74726163742e63726561746564",
              "id": 1253,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "333:33:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6ea586b01b93169892b084e656c4efd004082d61c22d49fa7046dacfea77c0c8",
                "typeString": "literal_string \"certified_file.contract.created\""
              },
              "value": "certified_file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1258,
            "name": "certifiedFiles",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "373:57:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
              "typeString": "mapping(bytes32 => contract CertifiedFile)"
            },
            "typeName": {
              "id": 1257,
              "keyType": {
                "id": 1255,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "382:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "373:34:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                "typeString": "mapping(bytes32 => contract CertifiedFile)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1256,
                "name": "CertifiedFile",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1241,
                "src": "393:13:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                  "typeString": "contract CertifiedFile"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1261,
            "name": "certifiedFilesIds",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "437:35:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1259,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "437:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1260,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "437:9:6",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1271,
              "nodeType": "Block",
              "src": "703:2:6",
              "statements": []
            },
            "documentation": null,
            "id": 1272,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1266,
                    "name": "_userContractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1263,
                    "src": "587:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "6365727469666965642d66696c652d61676772656761746f72",
                    "id": 1267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "621:27:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_659148c616fd982a31124bfbbae6f9041fc11ffdd697b5e23d59d6cc2479d743",
                      "typeString": "literal_string \"certified-file-aggregator\""
                    },
                    "value": "certified-file-aggregator"
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "6365727469666965642d66696c652d6e6f74696669657273",
                    "id": 1268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "662:26:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c035f1ebcfc258c72fa01905bcc3cb43341138bfce84b3d302a119952191b84",
                      "typeString": "literal_string \"certified-file-notifiers\""
                    },
                    "value": "certified-file-notifiers"
                  }
                ],
                "id": 1269,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1265,
                  "name": "BaseAggregator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 70,
                  "src": "559:14:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseAggregator_$70_$",
                    "typeString": "type(contract BaseAggregator)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "559:139:6"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1263,
                  "name": "_userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1272,
                  "src": "501:28:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "491:44:6"
            },
            "returnParameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "703:0:6"
            },
            "scope": 1405,
            "src": "479:226:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1292,
              "nodeType": "Block",
              "src": "831:105:6",
              "statements": [
                {
                  "assignments": [
                    1280
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1280,
                      "name": "bytes32id",
                      "nodeType": "VariableDeclaration",
                      "scope": 1292,
                      "src": "841:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1279,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "841:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1285,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1283,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1274,
                        "src": "874:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1281,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "861:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "861:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "861:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "841:36:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1287,
                          "name": "certifiedFiles",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1258,
                          "src": "903:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                            "typeString": "mapping(bytes32 => contract CertifiedFile)"
                          }
                        },
                        "id": 1289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1288,
                          "name": "bytes32id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1280,
                          "src": "918:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "903:25:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                          "typeString": "contract CertifiedFile"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                          "typeString": "contract CertifiedFile"
                        }
                      ],
                      "id": 1286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "895:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "895:34:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1278,
                  "id": 1291,
                  "nodeType": "Return",
                  "src": "888:41:6"
                }
              ]
            },
            "documentation": null,
            "id": 1293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCertifiedFileById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1274,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "750:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1273,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "750:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "740:32:6"
            },
            "returnParameters": {
              "id": 1278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1277,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "818:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1276,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "818:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "817:9:6"
            },
            "scope": 1405,
            "src": "711:225:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1342,
              "nodeType": "Block",
              "src": "1068:393:6",
              "statements": [
                {
                  "assignments": [
                    1303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1303,
                      "name": "_more",
                      "nodeType": "VariableDeclaration",
                      "scope": 1342,
                      "src": "1078:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1302,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1078:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1310,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1306,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1304,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1295,
                        "src": "1091:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1099:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "1091:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1307,
                        "name": "certifiedFilesIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1261,
                        "src": "1103:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1308,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1103:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1091:36:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1078:49:6"
                },
                {
                  "assignments": [
                    1312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1312,
                      "name": "certifiedFileId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1342,
                      "src": "1137:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1311,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1137:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1316,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1313,
                      "name": "certifiedFilesIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1261,
                      "src": "1163:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1315,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1295,
                      "src": "1181:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1163:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1137:50:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1318,
                            "name": "certifiedFiles",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1258,
                            "src": "1209:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                              "typeString": "mapping(bytes32 => contract CertifiedFile)"
                            }
                          },
                          "id": 1320,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1319,
                            "name": "certifiedFileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1312,
                            "src": "1224:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1209:31:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        ],
                        "id": 1317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1201:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1201:40:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1253:1:6",
                          "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": 1322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1245:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1245:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1201:54:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1335,
                  "nodeType": "IfStatement",
                  "src": "1197:187:6",
                  "trueBody": {
                    "id": 1334,
                    "nodeType": "Block",
                    "src": "1257:127:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1327,
                                    "name": "certifiedFiles",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1258,
                                    "src": "1304:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                                      "typeString": "mapping(bytes32 => contract CertifiedFile)"
                                    }
                                  },
                                  "id": 1329,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1328,
                                    "name": "certifiedFileId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1312,
                                    "src": "1319:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1304:31:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                ],
                                "id": 1326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1296:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1296:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1331,
                              "name": "_more",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1303,
                              "src": "1354:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 1332,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1278:95:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 1301,
                        "id": 1333,
                        "nodeType": "Return",
                        "src": "1271:102:6"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1423:1:6",
                            "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": 1336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1415:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1415:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1339,
                        "name": "_more",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1303,
                        "src": "1439:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1340,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1401:53:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                      "typeString": "tuple(address payable,bool)"
                    }
                  },
                  "functionReturnParameters": 1301,
                  "id": 1341,
                  "nodeType": "Return",
                  "src": "1394:60:6"
                }
              ]
            },
            "documentation": null,
            "id": 1343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCertifiedFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1295,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "977:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1294,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "977:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "967:26:6"
            },
            "returnParameters": {
              "id": 1301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1298,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1039:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1297,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1300,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1053:9:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:25:6"
            },
            "scope": 1405,
            "src": "942:519:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1351,
              "nodeType": "Block",
              "src": "1539:48:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1348,
                      "name": "certifiedFilesIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1261,
                      "src": "1556:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1349,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1556:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1347,
                  "id": 1350,
                  "nodeType": "Return",
                  "src": "1549:31:6"
                }
              ]
            },
            "documentation": null,
            "id": 1352,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1481:2:6"
            },
            "returnParameters": {
              "id": 1347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1346,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1352,
                  "src": "1529:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1345,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1528:6:6"
            },
            "scope": 1405,
            "src": "1467:120:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1403,
              "nodeType": "Block",
              "src": "1712:389:6",
              "statements": [
                {
                  "assignments": [
                    1362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1362,
                      "name": "bytes32eventType",
                      "nodeType": "VariableDeclaration",
                      "scope": 1403,
                      "src": "1722:24:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1361,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1722:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1367,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1365,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "1762:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1363,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1749:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1749:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1749:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1722:50:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 1373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1370,
                          "name": "CERTIFIED_FILE_CREATED_EVENT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1254,
                          "src": "1800:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1368,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "1787:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "1787:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 1371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1787:42:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1372,
                      "name": "bytes32eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1362,
                      "src": "1833:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1787:62:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1402,
                  "nodeType": "IfStatement",
                  "src": "1783:312:6",
                  "trueBody": {
                    "id": 1401,
                    "nodeType": "Block",
                    "src": "1851:244:6",
                    "statements": [
                      {
                        "assignments": [
                          1375
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1375,
                            "name": "certifiedFile",
                            "nodeType": "VariableDeclaration",
                            "scope": 1401,
                            "src": "1865:27:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1374,
                              "name": "CertifiedFile",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1241,
                              "src": "1865:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                "typeString": "contract CertifiedFile"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1379,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1377,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1356,
                              "src": "1909:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1376,
                            "name": "CertifiedFile",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1241,
                            "src": "1895:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_CertifiedFile_$1241_$",
                              "typeString": "type(contract CertifiedFile)"
                            }
                          },
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1895:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1865:49:6"
                      },
                      {
                        "assignments": [
                          1381
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1381,
                            "name": "bytes32id",
                            "nodeType": "VariableDeclaration",
                            "scope": 1401,
                            "src": "1929:17:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1380,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1929:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1388,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1384,
                                  "name": "certifiedFile",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1375,
                                  "src": "1962:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                },
                                "id": 1385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1122,
                                "src": "1962:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                  "typeString": "function () view external returns (string memory)"
                                }
                              },
                              "id": 1386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1962:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1382,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "1949:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 1383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "keccak",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7288,
                            "src": "1949:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (string memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1949:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1929:52:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1392,
                              "name": "bytes32id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1381,
                              "src": "2019:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1389,
                              "name": "certifiedFilesIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1261,
                              "src": "1996:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 1391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1996:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 1393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1996:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1394,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:33:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1395,
                              "name": "certifiedFiles",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1258,
                              "src": "2043:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                                "typeString": "mapping(bytes32 => contract CertifiedFile)"
                              }
                            },
                            "id": 1397,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1396,
                              "name": "bytes32id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1381,
                              "src": "2058:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2043:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "certifiedFile",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1375,
                            "src": "2071:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            }
                          },
                          "src": "2043:41:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        },
                        "id": 1400,
                        "nodeType": "ExpressionStatement",
                        "src": "2043:41:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1404,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1359,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1358,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22,
                  "src": "1693:14:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1693:14:6"
              }
            ],
            "name": "notify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1357,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1354,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "1618:23:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1353,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1618:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1356,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "1651:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1355,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1651:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1608:61:6"
            },
            "returnParameters": {
              "id": 1360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1712:0:6"
            },
            "scope": 1405,
            "src": "1593:508:6",
            "stateMutability": "nonpayable",
            "superFunction": 6926,
            "visibility": "public"
          }
        ],
        "scope": 1406,
        "src": "194:1909:6"
      }
    ],
    "src": "0:2103:6"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFileAggregator.sol",
    "exportedSymbols": {
      "CertifiedFileAggregator": [
        1405
      ]
    },
    "id": 1406,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1243,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/NotifierInterface.sol",
        "file": "./interfaces/NotifierInterface.sol",
        "id": 1244,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 6928,
        "src": "55:44:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/BaseAggregator.sol",
        "file": "./BaseAggregator.sol",
        "id": 1245,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 71,
        "src": "100:30:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/CertifiedFile.sol",
        "file": "./CertifiedFile.sol",
        "id": 1246,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 1242,
        "src": "131:29:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 1247,
        "nodeType": "ImportDirective",
        "scope": 1406,
        "sourceUnit": 7290,
        "src": "161:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1248,
              "name": "NotifierInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6927,
              "src": "234:17:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NotifierInterface_$6927",
                "typeString": "contract NotifierInterface"
              }
            },
            "id": 1249,
            "nodeType": "InheritanceSpecifier",
            "src": "234:17:6"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1250,
              "name": "BaseAggregator",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 70,
              "src": "257:14:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseAggregator_$70",
                "typeString": "contract BaseAggregator"
              }
            },
            "id": 1251,
            "nodeType": "InheritanceSpecifier",
            "src": "257:14:6"
          }
        ],
        "contractDependencies": [
          70,
          6927
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1405,
        "linearizedBaseContracts": [
          1405,
          70,
          6927
        ],
        "name": "CertifiedFileAggregator",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1254,
            "name": "CERTIFIED_FILE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "278:88:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1252,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "278:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6365727469666965645f66696c652e636f6e74726163742e63726561746564",
              "id": 1253,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "333:33:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6ea586b01b93169892b084e656c4efd004082d61c22d49fa7046dacfea77c0c8",
                "typeString": "literal_string \"certified_file.contract.created\""
              },
              "value": "certified_file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1258,
            "name": "certifiedFiles",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "373:57:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
              "typeString": "mapping(bytes32 => contract CertifiedFile)"
            },
            "typeName": {
              "id": 1257,
              "keyType": {
                "id": 1255,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "382:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "373:34:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                "typeString": "mapping(bytes32 => contract CertifiedFile)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1256,
                "name": "CertifiedFile",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1241,
                "src": "393:13:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                  "typeString": "contract CertifiedFile"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1261,
            "name": "certifiedFilesIds",
            "nodeType": "VariableDeclaration",
            "scope": 1405,
            "src": "437:35:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1259,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "437:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1260,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "437:9:6",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1271,
              "nodeType": "Block",
              "src": "703:2:6",
              "statements": []
            },
            "documentation": null,
            "id": 1272,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1266,
                    "name": "_userContractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1263,
                    "src": "587:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "6365727469666965642d66696c652d61676772656761746f72",
                    "id": 1267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "621:27:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_659148c616fd982a31124bfbbae6f9041fc11ffdd697b5e23d59d6cc2479d743",
                      "typeString": "literal_string \"certified-file-aggregator\""
                    },
                    "value": "certified-file-aggregator"
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "6365727469666965642d66696c652d6e6f74696669657273",
                    "id": 1268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "662:26:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c035f1ebcfc258c72fa01905bcc3cb43341138bfce84b3d302a119952191b84",
                      "typeString": "literal_string \"certified-file-notifiers\""
                    },
                    "value": "certified-file-notifiers"
                  }
                ],
                "id": 1269,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1265,
                  "name": "BaseAggregator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 70,
                  "src": "559:14:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseAggregator_$70_$",
                    "typeString": "type(contract BaseAggregator)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "559:139:6"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1263,
                  "name": "_userContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1272,
                  "src": "501:28:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "491:44:6"
            },
            "returnParameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "703:0:6"
            },
            "scope": 1405,
            "src": "479:226:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1292,
              "nodeType": "Block",
              "src": "831:105:6",
              "statements": [
                {
                  "assignments": [
                    1280
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1280,
                      "name": "bytes32id",
                      "nodeType": "VariableDeclaration",
                      "scope": 1292,
                      "src": "841:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1279,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "841:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1285,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1283,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1274,
                        "src": "874:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1281,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "861:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "861:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "861:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "841:36:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1287,
                          "name": "certifiedFiles",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1258,
                          "src": "903:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                            "typeString": "mapping(bytes32 => contract CertifiedFile)"
                          }
                        },
                        "id": 1289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1288,
                          "name": "bytes32id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1280,
                          "src": "918:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "903:25:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                          "typeString": "contract CertifiedFile"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                          "typeString": "contract CertifiedFile"
                        }
                      ],
                      "id": 1286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "895:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "895:34:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1278,
                  "id": 1291,
                  "nodeType": "Return",
                  "src": "888:41:6"
                }
              ]
            },
            "documentation": null,
            "id": 1293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCertifiedFileById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1274,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "750:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1273,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "750:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "740:32:6"
            },
            "returnParameters": {
              "id": 1278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1277,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "818:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1276,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "818:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "817:9:6"
            },
            "scope": 1405,
            "src": "711:225:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1342,
              "nodeType": "Block",
              "src": "1068:393:6",
              "statements": [
                {
                  "assignments": [
                    1303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1303,
                      "name": "_more",
                      "nodeType": "VariableDeclaration",
                      "scope": 1342,
                      "src": "1078:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1302,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1078:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1310,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1306,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1304,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1295,
                        "src": "1091:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1099:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "1091:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1307,
                        "name": "certifiedFilesIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1261,
                        "src": "1103:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1308,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1103:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1091:36:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1078:49:6"
                },
                {
                  "assignments": [
                    1312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1312,
                      "name": "certifiedFileId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1342,
                      "src": "1137:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1311,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1137:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1316,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1313,
                      "name": "certifiedFilesIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1261,
                      "src": "1163:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1315,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1295,
                      "src": "1181:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1163:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1137:50:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1318,
                            "name": "certifiedFiles",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1258,
                            "src": "1209:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                              "typeString": "mapping(bytes32 => contract CertifiedFile)"
                            }
                          },
                          "id": 1320,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1319,
                            "name": "certifiedFileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1312,
                            "src": "1224:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1209:31:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        ],
                        "id": 1317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1201:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1201:40:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1253:1:6",
                          "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": 1322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1245:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1245:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1201:54:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1335,
                  "nodeType": "IfStatement",
                  "src": "1197:187:6",
                  "trueBody": {
                    "id": 1334,
                    "nodeType": "Block",
                    "src": "1257:127:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1327,
                                    "name": "certifiedFiles",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1258,
                                    "src": "1304:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                                      "typeString": "mapping(bytes32 => contract CertifiedFile)"
                                    }
                                  },
                                  "id": 1329,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1328,
                                    "name": "certifiedFileId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1312,
                                    "src": "1319:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1304:31:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                ],
                                "id": 1326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1296:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1296:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1331,
                              "name": "_more",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1303,
                              "src": "1354:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 1332,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1278:95:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 1301,
                        "id": 1333,
                        "nodeType": "Return",
                        "src": "1271:102:6"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1423:1:6",
                            "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": 1336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1415:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1415:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1339,
                        "name": "_more",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1303,
                        "src": "1439:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1340,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1401:53:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                      "typeString": "tuple(address payable,bool)"
                    }
                  },
                  "functionReturnParameters": 1301,
                  "id": 1341,
                  "nodeType": "Return",
                  "src": "1394:60:6"
                }
              ]
            },
            "documentation": null,
            "id": 1343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCertifiedFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1295,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "977:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1294,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "977:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "967:26:6"
            },
            "returnParameters": {
              "id": 1301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1298,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1039:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1297,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1300,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1053:9:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:25:6"
            },
            "scope": 1405,
            "src": "942:519:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1351,
              "nodeType": "Block",
              "src": "1539:48:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1348,
                      "name": "certifiedFilesIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1261,
                      "src": "1556:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1349,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1556:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1347,
                  "id": 1350,
                  "nodeType": "Return",
                  "src": "1549:31:6"
                }
              ]
            },
            "documentation": null,
            "id": 1352,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1481:2:6"
            },
            "returnParameters": {
              "id": 1347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1346,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1352,
                  "src": "1529:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1345,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1528:6:6"
            },
            "scope": 1405,
            "src": "1467:120:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1403,
              "nodeType": "Block",
              "src": "1712:389:6",
              "statements": [
                {
                  "assignments": [
                    1362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1362,
                      "name": "bytes32eventType",
                      "nodeType": "VariableDeclaration",
                      "scope": 1403,
                      "src": "1722:24:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1361,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1722:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1367,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1365,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "1762:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1363,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7289,
                        "src": "1749:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keccak",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7288,
                      "src": "1749:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1749:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1722:50:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 1373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1370,
                          "name": "CERTIFIED_FILE_CREATED_EVENT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1254,
                          "src": "1800:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1368,
                          "name": "Utils",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "1787:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                            "typeString": "type(library Utils)"
                          }
                        },
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keccak",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7288,
                        "src": "1787:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (string memory) pure returns (bytes32)"
                        }
                      },
                      "id": 1371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1787:42:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1372,
                      "name": "bytes32eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1362,
                      "src": "1833:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1787:62:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1402,
                  "nodeType": "IfStatement",
                  "src": "1783:312:6",
                  "trueBody": {
                    "id": 1401,
                    "nodeType": "Block",
                    "src": "1851:244:6",
                    "statements": [
                      {
                        "assignments": [
                          1375
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1375,
                            "name": "certifiedFile",
                            "nodeType": "VariableDeclaration",
                            "scope": 1401,
                            "src": "1865:27:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1374,
                              "name": "CertifiedFile",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1241,
                              "src": "1865:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                "typeString": "contract CertifiedFile"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1379,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1377,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1356,
                              "src": "1909:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1376,
                            "name": "CertifiedFile",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1241,
                            "src": "1895:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_CertifiedFile_$1241_$",
                              "typeString": "type(contract CertifiedFile)"
                            }
                          },
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1895:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1865:49:6"
                      },
                      {
                        "assignments": [
                          1381
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1381,
                            "name": "bytes32id",
                            "nodeType": "VariableDeclaration",
                            "scope": 1401,
                            "src": "1929:17:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1380,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1929:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1388,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1384,
                                  "name": "certifiedFile",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1375,
                                  "src": "1962:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                                    "typeString": "contract CertifiedFile"
                                  }
                                },
                                "id": 1385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1122,
                                "src": "1962:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                  "typeString": "function () view external returns (string memory)"
                                }
                              },
                              "id": 1386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1962:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1382,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "1949:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 1383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "keccak",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7288,
                            "src": "1949:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (string memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1949:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1929:52:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1392,
                              "name": "bytes32id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1381,
                              "src": "2019:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1389,
                              "name": "certifiedFilesIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1261,
                              "src": "1996:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 1391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1996:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 1393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1996:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1394,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:33:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1395,
                              "name": "certifiedFiles",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1258,
                              "src": "2043:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_contract$_CertifiedFile_$1241_$",
                                "typeString": "mapping(bytes32 => contract CertifiedFile)"
                              }
                            },
                            "id": 1397,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1396,
                              "name": "bytes32id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1381,
                              "src": "2058:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2043:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "certifiedFile",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1375,
                            "src": "2071:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                              "typeString": "contract CertifiedFile"
                            }
                          },
                          "src": "2043:41:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CertifiedFile_$1241",
                            "typeString": "contract CertifiedFile"
                          }
                        },
                        "id": 1400,
                        "nodeType": "ExpressionStatement",
                        "src": "2043:41:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1404,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1359,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1358,
                  "name": "signaturitOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22,
                  "src": "1693:14:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1693:14:6"
              }
            ],
            "name": "notify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1357,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1354,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "1618:23:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1353,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1618:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1356,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "1651:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1355,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1651:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1608:61:6"
            },
            "returnParameters": {
              "id": 1360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1712:0:6"
            },
            "scope": 1405,
            "src": "1593:508:6",
            "stateMutability": "nonpayable",
            "superFunction": 6926,
            "visibility": "public"
          }
        ],
        "scope": 1406,
        "src": "194:1909:6"
      }
    ],
    "src": "0:2103:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.242Z"
}