{
  "contractName": "DNSResolver",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "resource",
          "type": "uint16"
        },
        {
          "indexed": false,
          "name": "record",
          "type": "bytes"
        }
      ],
      "name": "DNSRecordChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "DNSRecordDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "DNSZoneCleared",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setDNSRecords",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "name",
          "type": "bytes32"
        },
        {
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "dnsRecord",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "name",
          "type": "bytes32"
        }
      ],
      "name": "hasDNSRecords",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "clearDNSZone",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.8+commit.23d335f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"},{\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearDNSZone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"DNSZoneCleared\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"clearDNSZone(bytes32)\":{\"params\":{\"node\":\"the namehash of the node for which to clear the zone\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"return\":\"the DNS record in wire format if present, otherwise empty\"},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}}}},\"userdoc\":{\"methods\":{\"clearDNSZone(bytes32)\":{\"notice\":\"Clear all information for a DNS zone.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:    a.example.com IN A 1.2.3.4    a.example.com IN A 5.6.7.8    www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:    a.example.com IN A 1.2.3.4    www.example.com IN CNAME a.example.com.    a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol\":\"DNSResolver\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/user/Dropbox/projects/resolvers/contracts/ResolverBase.sol\":{\"keccak256\":\"0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8\",\"urls\":[\"bzzr://81e5565403a67f558d12c787f53f40ff19a5da99c648f8a4f99f2caa449ca0e6\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol\":{\"keccak256\":\"0x51534f5ebdcfda403b1a935f256e7f27d16b490e5b023b6e57877973daf9a4d4\",\"urls\":[\"bzzr://a81c189814102f6debd761795650d94694225b7486d490faf7d5fb6e0704ed28\"]},\"@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0x1264adbd06f6e05b04539bb225063a988b7fa90343d068de60cdde6cfb6fa92d\",\"urls\":[\"bzzr://8f1cb39e242b73bb7fac1f48bf0380ccccad14f06aae9cf4f87329cc78186122\"]},\"@ensdomains/dnssec-oracle/contracts/BytesUtils.sol\":{\"keccak256\":\"0x4014e689ef4a36cbf7103d88286abd2a7c560c2a7af99a561c33c61bc78be27a\",\"urls\":[\"bzzr://adf984996598f1e0d446eea1eda14ed2c49ab86a4ea1ae837cf4f9d99556b9c2\"]},\"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\":{\"keccak256\":\"0x5135591043cf38413b19f93d16f189f0f8b50b01b78642fb764635d9790cc7ca\",\"urls\":[\"bzzr://7e3a0111306a7c5640e213da22bcfac1e42b813e8d4d99ef7ea33c09747049fc\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../ResolverBase.sol\";\nimport \"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\";\n\ncontract DNSResolver is ResolverBase {\n    using RRUtils for *;\n    using BytesUtils for bytes;\n\n    bytes4 constant private DNS_RECORD_INTERFACE_ID = 0xa8fa5682;\n\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\n    event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record);\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\n    // DNSZoneCleared is emitted whenever a given node's zone information is cleared.\n    event DNSZoneCleared(bytes32 indexed node);\n\n    // Version the mapping for each zone.  This allows users who have lost\n    // track of their entries to effectively delete an entire zone by bumping\n    // the version number.\n    // node => version\n    mapping(bytes32=>uint256) private versions;\n\n    // The records themselves.  Stored as binary RRSETs\n    // node => version => name => resource => data\n    mapping(bytes32=>mapping(uint256=>mapping(bytes32=>mapping(uint16=>bytes)))) private records;\n\n    // Count of number of entries for a given name.  Required for DNS resolvers\n    // when resolving wildcards.\n    // node => version => name => number of records\n    mapping(bytes32=>mapping(uint256=>mapping(bytes32=>uint16))) private nameEntriesCount;\n\n    /**\n     * Set one or more DNS records.  Records are supplied in wire-format.\n     * Records with the same node/name/resource must be supplied one after the\n     * other to ensure the data is updated correctly. For example, if the data\n     * was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     a.example.com IN A 5.6.7.8\n     *     www.example.com IN CNAME a.example.com.\n     * then this would store the two A records for a.example.com correctly as a\n     * single RRSET, however if the data was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     www.example.com IN CNAME a.example.com.\n     *     a.example.com IN A 5.6.7.8\n     * then this would store the first A record, the CNAME, then the second A\n     * record which would overwrite the first.\n     *\n     * @param node the namehash of the node for which to set the records\n     * @param data the DNS wire format records to set\n     */\n    function setDNSRecords(bytes32 node, bytes calldata data) external authorised(node) {\n        uint16 resource = 0;\n        uint256 offset = 0;\n        bytes memory name;\n        bytes memory value;\n        bytes32 nameHash;\n        // Iterate over the data to add the resource records\n        for (RRUtils.RRIterator memory iter = data.iterateRRs(0); !iter.done(); iter.next()) {\n            if (resource == 0) {\n                resource = iter.dnstype;\n                name = iter.name();\n                nameHash = keccak256(abi.encodePacked(name));\n                value = bytes(iter.rdata());\n            } else {\n                bytes memory newName = iter.name();\n                if (resource != iter.dnstype || !name.equals(newName)) {\n                    setDNSRRSet(node, name, resource, data, offset, iter.offset - offset, value.length == 0);\n                    resource = iter.dnstype;\n                    offset = iter.offset;\n                    name = newName;\n                    nameHash = keccak256(name);\n                    value = bytes(iter.rdata());\n                }\n            }\n        }\n        if (name.length > 0) {\n            setDNSRRSet(node, name, resource, data, offset, data.length - offset, value.length == 0);\n        }\n    }\n\n    /**\n     * Obtain a DNS record.\n     * @param node the namehash of the node for which to fetch the record\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n     * @return the DNS record in wire format if present, otherwise empty\n     */\n    function dnsRecord(bytes32 node, bytes32 name, uint16 resource) public view returns (bytes memory) {\n        return records[node][versions[node]][name][resource];\n    }\n\n    /**\n     * Check if a given node has records.\n     * @param node the namehash of the node for which to check the records\n     * @param name the namehash of the node for which to check the records\n     */\n    function hasDNSRecords(bytes32 node, bytes32 name) public view returns (bool) {\n        return (nameEntriesCount[node][versions[node]][name] != 0);\n    }\n\n    /**\n     * Clear all information for a DNS zone.\n     * @param node the namehash of the node for which to clear the zone\n     */\n    function clearDNSZone(bytes32 node) public authorised(node) {\n        versions[node]++;\n        emit DNSZoneCleared(node);\n    }\n\n    function supportsInterface(bytes4 interfaceID) public pure returns(bool) {\n        return interfaceID == DNS_RECORD_INTERFACE_ID || super.supportsInterface(interfaceID);\n    }\n\n    function setDNSRRSet(\n        bytes32 node,\n        bytes memory name,\n        uint16 resource,\n        bytes memory data,\n        uint256 offset,\n        uint256 size,\n        bool deleteRecord) private\n    {\n        uint256 version = versions[node];\n        bytes32 nameHash = keccak256(name);\n        bytes memory rrData = data.substring(offset, size);\n        if (deleteRecord) {\n            if (records[node][version][nameHash][resource].length != 0) {\n                nameEntriesCount[node][version][nameHash]--;\n            }\n            delete(records[node][version][nameHash][resource]);\n            emit DNSRecordDeleted(node, name, resource);\n        } else {\n            if (records[node][version][nameHash][resource].length == 0) {\n                nameEntriesCount[node][version][nameHash]++;\n            }\n            records[node][version][nameHash][resource] = rrData;\n            emit DNSRecordChanged(node, name, resource, rrData);\n        }\n    }\n}\n",
  "sourcePath": "/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol",
  "ast": {
    "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol",
    "exportedSymbols": {
      "DNSResolver": [
        1458
      ]
    },
    "id": 1459,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1029,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/ResolverBase.sol",
        "file": "../ResolverBase.sol",
        "id": 1030,
        "nodeType": "ImportDirective",
        "scope": 1459,
        "sourceUnit": 663,
        "src": "25:29:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "file": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "id": 1031,
        "nodeType": "ImportDirective",
        "scope": 1459,
        "sourceUnit": 3703,
        "src": "55:57:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1032,
              "name": "ResolverBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 662,
              "src": "138:12:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverBase_$662",
                "typeString": "contract ResolverBase"
              }
            },
            "id": 1033,
            "nodeType": "InheritanceSpecifier",
            "src": "138:12:9"
          }
        ],
        "contractDependencies": [
          662
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1458,
        "linearizedBaseContracts": [
          1458,
          662
        ],
        "name": "DNSResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1035,
            "libraryName": {
              "contractScope": null,
              "id": 1034,
              "name": "RRUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3702,
              "src": "163:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RRUtils_$3702",
                "typeString": "library RRUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "157:20:9",
            "typeName": null
          },
          {
            "id": 1038,
            "libraryName": {
              "contractScope": null,
              "id": 1036,
              "name": "BytesUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3081,
              "src": "188:10:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesUtils_$3081",
                "typeString": "library BytesUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "182:27:9",
            "typeName": {
              "id": 1037,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "203:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 1041,
            "name": "DNS_RECORD_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "215:60:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 1039,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "215:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786138666135363832",
              "id": 1040,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2834978434_by_1",
                "typeString": "int_const 2834978434"
              },
              "value": "0xa8fa5682"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1051,
            "name": "DNSRecordChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1043,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "396:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1042,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1045,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "418:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1044,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "418:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1047,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "430:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1046,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1049,
                  "indexed": false,
                  "name": "record",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "447:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:65:9"
            },
            "src": "373:88:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1059,
            "name": "DNSRecordDeleted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1053,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "580:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "580:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1055,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "602:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1054,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "602:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1057,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "614:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1056,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "614:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "579:51:9"
            },
            "src": "557:74:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1063,
            "name": "DNSZoneCleared",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1061,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1063,
                  "src": "743:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:22:9"
            },
            "src": "722:43:9"
          },
          {
            "constant": false,
            "id": 1067,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "974:42:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 1066,
              "keyType": {
                "id": 1064,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "982:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "974:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 1065,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "991:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1077,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "1130:92:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
            },
            "typeName": {
              "id": 1076,
              "keyType": {
                "id": 1068,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1138:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1130:76:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
              },
              "valueType": {
                "id": 1075,
                "keyType": {
                  "id": 1069,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1155:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1147:58:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"
                },
                "valueType": {
                  "id": 1074,
                  "keyType": {
                    "id": 1070,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1164:40:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes))"
                  },
                  "valueType": {
                    "id": 1073,
                    "keyType": {
                      "id": 1071,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1189:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1181:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                      "typeString": "mapping(uint16 => bytes)"
                    },
                    "valueType": {
                      "id": 1072,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1085,
            "name": "nameEntriesCount",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "1394:85:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
            },
            "typeName": {
              "id": 1084,
              "keyType": {
                "id": 1078,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1402:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1394:60:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
              },
              "valueType": {
                "id": 1083,
                "keyType": {
                  "id": 1079,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1419:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1411:42:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                },
                "valueType": {
                  "id": 1082,
                  "keyType": {
                    "id": 1080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1436:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:24:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                    "typeString": "mapping(bytes32 => uint16)"
                  },
                  "valueType": {
                    "id": 1081,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1445:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1249,
              "nodeType": "Block",
              "src": "2487:1179:9",
              "statements": [
                {
                  "assignments": [
                    1096
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1096,
                      "name": "resource",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2497:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 1095,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2497:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1098,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2515:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2497:19:9"
                },
                {
                  "assignments": [
                    1100
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1100,
                      "name": "offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2526:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1102,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2543:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2526:18:9"
                },
                {
                  "assignments": [
                    1104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1104,
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2554:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1103,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2554:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1105,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2554:17:9"
                },
                {
                  "assignments": [
                    1107
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1107,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2581:18:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1106,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2581:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1108,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2581:18:9"
                },
                {
                  "assignments": [
                    1110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1110,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2609:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1109,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2609:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1111,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2609:16:9"
                },
                {
                  "body": {
                    "id": 1225,
                    "nodeType": "Block",
                    "src": "2781:736:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 1131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1129,
                            "name": "resource",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1096,
                            "src": "2799:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2811:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2799:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1223,
                          "nodeType": "Block",
                          "src": "3019:488:9",
                          "statements": [
                            {
                              "assignments": [
                                1162
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1162,
                                  "name": "newName",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1223,
                                  "src": "3037:20:9",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 1161,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3037:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1166,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1163,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1115,
                                    "src": "3060:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 1164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3387,
                                  "src": "3060:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 1165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3060:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3037:34:9"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 1170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1167,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1096,
                                    "src": "3093:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1168,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1115,
                                      "src": "3105:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 1169,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "dnstype",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3214,
                                    "src": "3105:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "src": "3093:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1175,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3121:21:9",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1173,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1162,
                                        "src": "3134:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1171,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1104,
                                        "src": "3122:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1172,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "equals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2651,
                                      "src": "3122:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                      }
                                    },
                                    "id": 1174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3122:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "3093:49:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1222,
                              "nodeType": "IfStatement",
                              "src": "3089:404:9",
                              "trueBody": {
                                "id": 1221,
                                "nodeType": "Block",
                                "src": "3144:349:9",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1178,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1087,
                                          "src": "3178:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1179,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1104,
                                          "src": "3184:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1180,
                                          "name": "resource",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1096,
                                          "src": "3190:8:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1181,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1089,
                                          "src": "3200:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1182,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1100,
                                          "src": "3206:6:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1186,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1183,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1115,
                                              "src": "3214:4:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 1184,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3212,
                                            "src": "3214:11:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 1185,
                                            "name": "offset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1100,
                                            "src": "3228:6:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3214:20:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1190,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1187,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1107,
                                              "src": "3236:5:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 1188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "3236:12:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 1189,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3252:1:9",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "3236:17:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 1177,
                                        "name": "setDNSRRSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1457,
                                        "src": "3166:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 1191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3166:88:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1192,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3166:88:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1196,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1193,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1096,
                                        "src": "3276:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1194,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "3287:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1195,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "dnstype",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3214,
                                        "src": "3287:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "3276:23:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 1197,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3276:23:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1198,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1100,
                                        "src": "3321:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1199,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "3330:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1200,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3212,
                                        "src": "3330:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3321:20:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1202,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3321:20:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1205,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1203,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1104,
                                        "src": "3363:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 1204,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1162,
                                        "src": "3370:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3363:14:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1206,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3363:14:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1211,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1207,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1110,
                                        "src": "3399:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1209,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1104,
                                            "src": "3420:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 1208,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4127,
                                          "src": "3410:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 1210,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3410:15:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3399:26:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 1212,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3399:26:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1219,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1213,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1107,
                                        "src": "3447:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1215,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1115,
                                                "src": "3461:4:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 1216,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rdata",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3407,
                                              "src": "3461:10:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 1217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3461:12:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 1214,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3455:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 1218,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3455:19:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3447:27:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1220,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3447:27:9"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 1224,
                        "nodeType": "IfStatement",
                        "src": "2795:712:9",
                        "trueBody": {
                          "id": 1160,
                          "nodeType": "Block",
                          "src": "2814:199:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1132,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1096,
                                  "src": "2832:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1133,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1115,
                                    "src": "2843:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 1134,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3214,
                                  "src": "2843:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2832:23:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1136,
                              "nodeType": "ExpressionStatement",
                              "src": "2832:23:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1137,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1104,
                                  "src": "2873:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1138,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1115,
                                      "src": "2880:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 1139,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3387,
                                    "src": "2880:9:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                      "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2880:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2873:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1142,
                              "nodeType": "ExpressionStatement",
                              "src": "2873:18:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1143,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1110,
                                  "src": "2909:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1147,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1104,
                                          "src": "2947:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1145,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4120,
                                          "src": "2930:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2930:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2930:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1144,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4127,
                                    "src": "2920:9:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2920:33:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2909:44:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1151,
                              "nodeType": "ExpressionStatement",
                              "src": "2909:44:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1152,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1107,
                                  "src": "2971:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1154,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "2985:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1155,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rdata",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3407,
                                        "src": "2985:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1156,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2985:12:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1153,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2979:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 1157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2979:19:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2971:27:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1159,
                              "nodeType": "ExpressionStatement",
                              "src": "2971:27:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "id": 1124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2754:12:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "2755:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 1122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "done",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3264,
                        "src": "2755:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                        }
                      },
                      "id": 1123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2755:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1226,
                  "initializationExpression": {
                    "assignments": [
                      1115
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1115,
                        "name": "iter",
                        "nodeType": "VariableDeclaration",
                        "scope": 1226,
                        "src": "2701:30:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1114,
                          "name": "RRUtils.RRIterator",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3223,
                          "src": "2701:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1120,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2750:1:9",
                          "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"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1116,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1089,
                          "src": "2734:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "id": 1117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "iterateRRs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3249,
                        "src": "2734:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$3223_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                        }
                      },
                      "id": 1119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2734:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                        "typeString": "struct RRUtils.RRIterator memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2701:51:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1125,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "2768:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 1126,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3366,
                        "src": "2768:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure"
                        }
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2768:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1128,
                    "nodeType": "ExpressionStatement",
                    "src": "2768:11:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "2696:821:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1227,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "3530:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3530:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3544:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3530:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1248,
                  "nodeType": "IfStatement",
                  "src": "3526:134:9",
                  "trueBody": {
                    "id": 1247,
                    "nodeType": "Block",
                    "src": "3547:113:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1232,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1087,
                              "src": "3573:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1233,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1104,
                              "src": "3579:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1234,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "3585:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1235,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1089,
                              "src": "3595:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1236,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1100,
                              "src": "3601:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1237,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "3609:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 1238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3609:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1239,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1100,
                                "src": "3623:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3609:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1241,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1107,
                                  "src": "3631:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3631:12:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3647:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3631:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1231,
                            "name": "setDNSRRSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1457,
                            "src": "3561:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                            }
                          },
                          "id": 1245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3561:88:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1246,
                        "nodeType": "ExpressionStatement",
                        "src": "3561:88:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Set one or more DNS records.  Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n    a.example.com IN A 1.2.3.4\n    a.example.com IN A 5.6.7.8\n    www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n    a.example.com IN A 1.2.3.4\n    www.example.com IN CNAME a.example.com.\n    a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n     * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set",
            "id": 1250,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1092,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1087,
                    "src": "2481:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1093,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1091,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 629,
                  "src": "2470:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2470:16:9"
              }
            ],
            "name": "setDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1087,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1250,
                  "src": "2426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1086,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1089,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1250,
                  "src": "2440:19:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1088,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:35:9"
            },
            "returnParameters": {
              "id": 1094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2487:0:9"
            },
            "scope": 1458,
            "src": "2403:1263:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1273,
              "nodeType": "Block",
              "src": "4167:69:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1261,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "4184:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                            }
                          },
                          "id": 1263,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1262,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "4192:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4184:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                            "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                          }
                        },
                        "id": 1267,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1264,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1067,
                            "src": "4198:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1266,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1265,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "4207:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4198:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4184:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                        }
                      },
                      "id": 1269,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1268,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1254,
                        "src": "4214:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4184:35:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                        "typeString": "mapping(uint16 => bytes storage ref)"
                      }
                    },
                    "id": 1271,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1270,
                      "name": "resource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1256,
                      "src": "4220:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4184:45:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 1260,
                  "id": 1272,
                  "nodeType": "Return",
                  "src": "4177:52:9"
                }
              ]
            },
            "documentation": "Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty",
            "id": 1274,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "dnsRecord",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1252,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1251,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1254,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4101:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1253,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4101:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1256,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4115:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1255,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4115:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4086:45:9"
            },
            "returnParameters": {
              "id": 1260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1259,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4153:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1258,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4153:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4152:14:9"
            },
            "scope": 1458,
            "src": "4068:168:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1296,
              "nodeType": "Block",
              "src": "4528:75:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 1293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1283,
                                "name": "nameEntriesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1085,
                                "src": "4546:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                }
                              },
                              "id": 1285,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1284,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1276,
                                "src": "4563:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4546:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                              }
                            },
                            "id": 1289,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1286,
                                "name": "versions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1067,
                                "src": "4569:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 1288,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1287,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1276,
                                "src": "4578:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4569:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4546:38:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                              "typeString": "mapping(bytes32 => uint16)"
                            }
                          },
                          "id": 1291,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1290,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1278,
                            "src": "4585:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4546:44:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4546:49:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1294,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4545:51:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1282,
                  "id": 1295,
                  "nodeType": "Return",
                  "src": "4538:58:9"
                }
              ]
            },
            "documentation": "Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records",
            "id": 1297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1276,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4473:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1275,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4473:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1278,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4487:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1277,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4487:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:28:9"
            },
            "returnParameters": {
              "id": 1282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1281,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4522:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1280,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4522:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4521:6:9"
            },
            "scope": 1458,
            "src": "4450:153:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1314,
              "nodeType": "Block",
              "src": "4802:68:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "4812:16:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1305,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1067,
                        "src": "4812:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 1307,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1306,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "4821:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4812:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1309,
                  "nodeType": "ExpressionStatement",
                  "src": "4812:16:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1311,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "4858:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1310,
                      "name": "DNSZoneCleared",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1063,
                      "src": "4843:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4843:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1313,
                  "nodeType": "EmitStatement",
                  "src": "4838:25:9"
                }
              ]
            },
            "documentation": "Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone",
            "id": 1315,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1302,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1299,
                    "src": "4796:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1303,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1301,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 629,
                  "src": "4785:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4785:16:9"
              }
            ],
            "name": "clearDNSZone",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1299,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "4764:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1298,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:14:9"
            },
            "returnParameters": {
              "id": 1304,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4802:0:9"
            },
            "scope": 1458,
            "src": "4742:128:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1331,
              "nodeType": "Block",
              "src": "4949:102:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1322,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1317,
                        "src": "4966:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1323,
                        "name": "DNS_RECORD_INTERFACE_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1041,
                        "src": "4981:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "4966:38:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1327,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1317,
                          "src": "5032:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1325,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4184,
                          "src": "5008:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_DNSResolver_$1458",
                            "typeString": "contract super DNSResolver"
                          }
                        },
                        "id": 1326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 610,
                        "src": "5008:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) pure returns (bool)"
                        }
                      },
                      "id": 1328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5008:36:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4966:78:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1321,
                  "id": 1330,
                  "nodeType": "Return",
                  "src": "4959:85:9"
                }
              ]
            },
            "documentation": null,
            "id": 1332,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1317,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1332,
                  "src": "4903:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1316,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4902:20:9"
            },
            "returnParameters": {
              "id": 1321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1320,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1332,
                  "src": "4943:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1319,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4943:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4942:6:9"
            },
            "scope": 1458,
            "src": "4876:175:9",
            "stateMutability": "pure",
            "superFunction": 610,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1456,
              "nodeType": "Block",
              "src": "5265:757:9",
              "statements": [
                {
                  "assignments": [
                    1350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1350,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5275:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5275:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1351,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1067,
                      "src": "5293:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 1353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1352,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1334,
                      "src": "5302:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5293:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5275:32:9"
                },
                {
                  "assignments": [
                    1356
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1356,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5317:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1355,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5317:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1360,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1358,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "5346:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1357,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4127,
                      "src": "5336:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5317:34:9"
                },
                {
                  "assignments": [
                    1362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1362,
                      "name": "rrData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5361:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1361,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5361:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1368,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1365,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1342,
                        "src": "5398:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1366,
                        "name": "size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1344,
                        "src": "5406:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1363,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1340,
                        "src": "5383:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2858,
                      "src": "5383:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 1367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5383:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5361:50:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1369,
                    "name": "deleteRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1346,
                    "src": "5425:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1454,
                    "nodeType": "Block",
                    "src": "5726:290:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1412,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1077,
                                      "src": "5744:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 1414,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1413,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1334,
                                      "src": "5752:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5744:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 1416,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1415,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1350,
                                    "src": "5758:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5744:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 1418,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1417,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1356,
                                  "src": "5767:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5744:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 1420,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1419,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1338,
                                "src": "5777:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5744:42:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 1421,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5744:49:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5797:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5744:54:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1434,
                        "nodeType": "IfStatement",
                        "src": "5740:136:9",
                        "trueBody": {
                          "id": 1433,
                          "nodeType": "Block",
                          "src": "5800:76:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5818:43:9",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1424,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1085,
                                        "src": "5818:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 1428,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1425,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5835:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5818:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 1429,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1426,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5841:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5818:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 1430,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1427,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5850:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5818:41:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1432,
                              "nodeType": "ExpressionStatement",
                              "src": "5818:43:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1435,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1077,
                                    "src": "5889:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                    }
                                  },
                                  "id": 1440,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1436,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1334,
                                    "src": "5897:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5889:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                  }
                                },
                                "id": 1441,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1437,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1350,
                                  "src": "5903:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5889:22:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                }
                              },
                              "id": 1442,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1438,
                                "name": "nameHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1356,
                                "src": "5912:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5889:32:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                "typeString": "mapping(uint16 => bytes storage ref)"
                              }
                            },
                            "id": 1443,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1439,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5922:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5889:42:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1444,
                            "name": "rrData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1362,
                            "src": "5934:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5889:51:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 1446,
                        "nodeType": "ExpressionStatement",
                        "src": "5889:51:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1448,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1334,
                              "src": "5976:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1449,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1336,
                              "src": "5982:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1450,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5988:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1451,
                              "name": "rrData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "5998:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1447,
                            "name": "DNSRecordChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1051,
                            "src": "5959:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory)"
                            }
                          },
                          "id": 1452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:46:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1453,
                        "nodeType": "EmitStatement",
                        "src": "5954:51:9"
                      }
                    ]
                  },
                  "id": 1455,
                  "nodeType": "IfStatement",
                  "src": "5421:595:9",
                  "trueBody": {
                    "id": 1411,
                    "nodeType": "Block",
                    "src": "5439:281:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1370,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1077,
                                      "src": "5457:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 1372,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1371,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1334,
                                      "src": "5465:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5457:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 1374,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1373,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1350,
                                    "src": "5471:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5457:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 1376,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1375,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1356,
                                  "src": "5480:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5457:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 1378,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1377,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1338,
                                "src": "5490:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5457:42:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 1379,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5457:49:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5510:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5457:54:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1392,
                        "nodeType": "IfStatement",
                        "src": "5453:136:9",
                        "trueBody": {
                          "id": 1391,
                          "nodeType": "Block",
                          "src": "5513:76:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5531:43:9",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1382,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1085,
                                        "src": "5531:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 1386,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1383,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5548:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5531:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 1387,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1384,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5554:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5531:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 1388,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1385,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5563:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5531:41:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1390,
                              "nodeType": "ExpressionStatement",
                              "src": "5531:43:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5602:50:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1393,
                                        "name": "records",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1077,
                                        "src": "5609:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                        }
                                      },
                                      "id": 1395,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1394,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5617:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5609:13:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                      }
                                    },
                                    "id": 1397,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1396,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5623:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5609:22:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                    }
                                  },
                                  "id": 1399,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1398,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5632:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5609:32:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint16 => bytes storage ref)"
                                  }
                                },
                                "id": 1401,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1400,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1338,
                                  "src": "5642:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5609:42:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "id": 1402,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5608:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1404,
                        "nodeType": "ExpressionStatement",
                        "src": "5602:50:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1406,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1334,
                              "src": "5688:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1407,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1336,
                              "src": "5694:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1408,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5700:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 1405,
                            "name": "DNSRecordDeleted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1059,
                            "src": "5671:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16)"
                            }
                          },
                          "id": 1409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:38:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1410,
                        "nodeType": "EmitStatement",
                        "src": "5666:43:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1457,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDNSRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1334,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1336,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5109:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5109:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1338,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5136:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1337,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5136:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1340,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5161:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1339,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5161:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1342,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5188:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1341,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5188:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1344,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5212:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1343,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1346,
                  "name": "deleteRecord",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5234:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1345,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5234:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5077:175:9"
            },
            "returnParameters": {
              "id": 1348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5265:0:9"
            },
            "scope": 1458,
            "src": "5057:965:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 1459,
        "src": "114:5910:9"
      }
    ],
    "src": "0:6025:9"
  },
  "legacyAST": {
    "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol",
    "exportedSymbols": {
      "DNSResolver": [
        1458
      ]
    },
    "id": 1459,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1029,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/ResolverBase.sol",
        "file": "../ResolverBase.sol",
        "id": 1030,
        "nodeType": "ImportDirective",
        "scope": 1459,
        "sourceUnit": 663,
        "src": "25:29:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "file": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "id": 1031,
        "nodeType": "ImportDirective",
        "scope": 1459,
        "sourceUnit": 3703,
        "src": "55:57:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1032,
              "name": "ResolverBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 662,
              "src": "138:12:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverBase_$662",
                "typeString": "contract ResolverBase"
              }
            },
            "id": 1033,
            "nodeType": "InheritanceSpecifier",
            "src": "138:12:9"
          }
        ],
        "contractDependencies": [
          662
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1458,
        "linearizedBaseContracts": [
          1458,
          662
        ],
        "name": "DNSResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1035,
            "libraryName": {
              "contractScope": null,
              "id": 1034,
              "name": "RRUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3702,
              "src": "163:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RRUtils_$3702",
                "typeString": "library RRUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "157:20:9",
            "typeName": null
          },
          {
            "id": 1038,
            "libraryName": {
              "contractScope": null,
              "id": 1036,
              "name": "BytesUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3081,
              "src": "188:10:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesUtils_$3081",
                "typeString": "library BytesUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "182:27:9",
            "typeName": {
              "id": 1037,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "203:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 1041,
            "name": "DNS_RECORD_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "215:60:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 1039,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "215:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786138666135363832",
              "id": 1040,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2834978434_by_1",
                "typeString": "int_const 2834978434"
              },
              "value": "0xa8fa5682"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1051,
            "name": "DNSRecordChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1043,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "396:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1042,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1045,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "418:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1044,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "418:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1047,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "430:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1046,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1049,
                  "indexed": false,
                  "name": "record",
                  "nodeType": "VariableDeclaration",
                  "scope": 1051,
                  "src": "447:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:65:9"
            },
            "src": "373:88:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1059,
            "name": "DNSRecordDeleted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1053,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "580:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "580:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1055,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "602:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1054,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "602:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1057,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "614:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1056,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "614:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "579:51:9"
            },
            "src": "557:74:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1063,
            "name": "DNSZoneCleared",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1061,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1063,
                  "src": "743:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:22:9"
            },
            "src": "722:43:9"
          },
          {
            "constant": false,
            "id": 1067,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "974:42:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 1066,
              "keyType": {
                "id": 1064,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "982:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "974:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 1065,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "991:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1077,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "1130:92:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
            },
            "typeName": {
              "id": 1076,
              "keyType": {
                "id": 1068,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1138:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1130:76:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
              },
              "valueType": {
                "id": 1075,
                "keyType": {
                  "id": 1069,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1155:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1147:58:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"
                },
                "valueType": {
                  "id": 1074,
                  "keyType": {
                    "id": 1070,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1164:40:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes))"
                  },
                  "valueType": {
                    "id": 1073,
                    "keyType": {
                      "id": 1071,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1189:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1181:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                      "typeString": "mapping(uint16 => bytes)"
                    },
                    "valueType": {
                      "id": 1072,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1085,
            "name": "nameEntriesCount",
            "nodeType": "VariableDeclaration",
            "scope": 1458,
            "src": "1394:85:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
            },
            "typeName": {
              "id": 1084,
              "keyType": {
                "id": 1078,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1402:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1394:60:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
              },
              "valueType": {
                "id": 1083,
                "keyType": {
                  "id": 1079,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1419:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1411:42:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                },
                "valueType": {
                  "id": 1082,
                  "keyType": {
                    "id": 1080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1436:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:24:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                    "typeString": "mapping(bytes32 => uint16)"
                  },
                  "valueType": {
                    "id": 1081,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1445:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1249,
              "nodeType": "Block",
              "src": "2487:1179:9",
              "statements": [
                {
                  "assignments": [
                    1096
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1096,
                      "name": "resource",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2497:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 1095,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2497:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1098,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2515:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2497:19:9"
                },
                {
                  "assignments": [
                    1100
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1100,
                      "name": "offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2526:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1102,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2543:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2526:18:9"
                },
                {
                  "assignments": [
                    1104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1104,
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2554:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1103,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2554:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1105,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2554:17:9"
                },
                {
                  "assignments": [
                    1107
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1107,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2581:18:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1106,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2581:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1108,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2581:18:9"
                },
                {
                  "assignments": [
                    1110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1110,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1249,
                      "src": "2609:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1109,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2609:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1111,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2609:16:9"
                },
                {
                  "body": {
                    "id": 1225,
                    "nodeType": "Block",
                    "src": "2781:736:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 1131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1129,
                            "name": "resource",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1096,
                            "src": "2799:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2811:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2799:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1223,
                          "nodeType": "Block",
                          "src": "3019:488:9",
                          "statements": [
                            {
                              "assignments": [
                                1162
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1162,
                                  "name": "newName",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1223,
                                  "src": "3037:20:9",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 1161,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3037:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1166,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1163,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1115,
                                    "src": "3060:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 1164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3387,
                                  "src": "3060:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 1165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3060:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3037:34:9"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 1170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1167,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1096,
                                    "src": "3093:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1168,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1115,
                                      "src": "3105:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 1169,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "dnstype",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3214,
                                    "src": "3105:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "src": "3093:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1175,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3121:21:9",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1173,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1162,
                                        "src": "3134:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1171,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1104,
                                        "src": "3122:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1172,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "equals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2651,
                                      "src": "3122:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                      }
                                    },
                                    "id": 1174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3122:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "3093:49:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1222,
                              "nodeType": "IfStatement",
                              "src": "3089:404:9",
                              "trueBody": {
                                "id": 1221,
                                "nodeType": "Block",
                                "src": "3144:349:9",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1178,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1087,
                                          "src": "3178:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1179,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1104,
                                          "src": "3184:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1180,
                                          "name": "resource",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1096,
                                          "src": "3190:8:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1181,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1089,
                                          "src": "3200:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1182,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1100,
                                          "src": "3206:6:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1186,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1183,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1115,
                                              "src": "3214:4:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 1184,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3212,
                                            "src": "3214:11:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 1185,
                                            "name": "offset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1100,
                                            "src": "3228:6:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3214:20:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1190,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1187,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1107,
                                              "src": "3236:5:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 1188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "3236:12:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 1189,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3252:1:9",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "3236:17:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 1177,
                                        "name": "setDNSRRSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1457,
                                        "src": "3166:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 1191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3166:88:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1192,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3166:88:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1196,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1193,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1096,
                                        "src": "3276:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1194,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "3287:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1195,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "dnstype",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3214,
                                        "src": "3287:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "3276:23:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 1197,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3276:23:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1198,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1100,
                                        "src": "3321:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1199,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "3330:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1200,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3212,
                                        "src": "3330:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3321:20:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1202,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3321:20:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1205,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1203,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1104,
                                        "src": "3363:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 1204,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1162,
                                        "src": "3370:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3363:14:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1206,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3363:14:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1211,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1207,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1110,
                                        "src": "3399:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1209,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1104,
                                            "src": "3420:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 1208,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4127,
                                          "src": "3410:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 1210,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3410:15:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3399:26:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 1212,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3399:26:9"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1219,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1213,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1107,
                                        "src": "3447:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1215,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1115,
                                                "src": "3461:4:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 1216,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rdata",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3407,
                                              "src": "3461:10:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 1217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3461:12:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 1214,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3455:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 1218,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3455:19:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3447:27:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1220,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3447:27:9"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 1224,
                        "nodeType": "IfStatement",
                        "src": "2795:712:9",
                        "trueBody": {
                          "id": 1160,
                          "nodeType": "Block",
                          "src": "2814:199:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1132,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1096,
                                  "src": "2832:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1133,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1115,
                                    "src": "2843:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 1134,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3214,
                                  "src": "2843:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2832:23:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1136,
                              "nodeType": "ExpressionStatement",
                              "src": "2832:23:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1137,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1104,
                                  "src": "2873:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1138,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1115,
                                      "src": "2880:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 1139,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3387,
                                    "src": "2880:9:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                      "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2880:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2873:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1142,
                              "nodeType": "ExpressionStatement",
                              "src": "2873:18:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1143,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1110,
                                  "src": "2909:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1147,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1104,
                                          "src": "2947:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1145,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4120,
                                          "src": "2930:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2930:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2930:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1144,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4127,
                                    "src": "2920:9:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2920:33:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2909:44:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1151,
                              "nodeType": "ExpressionStatement",
                              "src": "2909:44:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1152,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1107,
                                  "src": "2971:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1154,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1115,
                                          "src": "2985:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 1155,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rdata",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3407,
                                        "src": "2985:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1156,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2985:12:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1153,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2979:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 1157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2979:19:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2971:27:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1159,
                              "nodeType": "ExpressionStatement",
                              "src": "2971:27:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "id": 1124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2754:12:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "2755:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 1122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "done",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3264,
                        "src": "2755:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                        }
                      },
                      "id": 1123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2755:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1226,
                  "initializationExpression": {
                    "assignments": [
                      1115
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1115,
                        "name": "iter",
                        "nodeType": "VariableDeclaration",
                        "scope": 1226,
                        "src": "2701:30:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1114,
                          "name": "RRUtils.RRIterator",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3223,
                          "src": "2701:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1120,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2750:1:9",
                          "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"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1116,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1089,
                          "src": "2734:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "id": 1117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "iterateRRs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3249,
                        "src": "2734:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$3223_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                        }
                      },
                      "id": 1119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2734:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                        "typeString": "struct RRUtils.RRIterator memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2701:51:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1125,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "2768:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$3223_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 1126,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3366,
                        "src": "2768:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$3223_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$3223_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure"
                        }
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2768:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1128,
                    "nodeType": "ExpressionStatement",
                    "src": "2768:11:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "2696:821:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1227,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "3530:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3530:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3544:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3530:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1248,
                  "nodeType": "IfStatement",
                  "src": "3526:134:9",
                  "trueBody": {
                    "id": 1247,
                    "nodeType": "Block",
                    "src": "3547:113:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1232,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1087,
                              "src": "3573:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1233,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1104,
                              "src": "3579:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1234,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "3585:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1235,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1089,
                              "src": "3595:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1236,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1100,
                              "src": "3601:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1237,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "3609:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 1238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3609:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1239,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1100,
                                "src": "3623:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3609:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1241,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1107,
                                  "src": "3631:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3631:12:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3647:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3631:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1231,
                            "name": "setDNSRRSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1457,
                            "src": "3561:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                            }
                          },
                          "id": 1245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3561:88:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1246,
                        "nodeType": "ExpressionStatement",
                        "src": "3561:88:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Set one or more DNS records.  Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n    a.example.com IN A 1.2.3.4\n    a.example.com IN A 5.6.7.8\n    www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n    a.example.com IN A 1.2.3.4\n    www.example.com IN CNAME a.example.com.\n    a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n     * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set",
            "id": 1250,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1092,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1087,
                    "src": "2481:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1093,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1091,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 629,
                  "src": "2470:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2470:16:9"
              }
            ],
            "name": "setDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1087,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1250,
                  "src": "2426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1086,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1089,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1250,
                  "src": "2440:19:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1088,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:35:9"
            },
            "returnParameters": {
              "id": 1094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2487:0:9"
            },
            "scope": 1458,
            "src": "2403:1263:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1273,
              "nodeType": "Block",
              "src": "4167:69:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1261,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "4184:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                            }
                          },
                          "id": 1263,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1262,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "4192:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4184:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                            "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                          }
                        },
                        "id": 1267,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1264,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1067,
                            "src": "4198:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1266,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1265,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "4207:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4198:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4184:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                        }
                      },
                      "id": 1269,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1268,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1254,
                        "src": "4214:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4184:35:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                        "typeString": "mapping(uint16 => bytes storage ref)"
                      }
                    },
                    "id": 1271,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1270,
                      "name": "resource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1256,
                      "src": "4220:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4184:45:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 1260,
                  "id": 1272,
                  "nodeType": "Return",
                  "src": "4177:52:9"
                }
              ]
            },
            "documentation": "Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty",
            "id": 1274,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "dnsRecord",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1252,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1251,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1254,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4101:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1253,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4101:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1256,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4115:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1255,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4115:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4086:45:9"
            },
            "returnParameters": {
              "id": 1260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1259,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1274,
                  "src": "4153:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1258,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4153:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4152:14:9"
            },
            "scope": 1458,
            "src": "4068:168:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1296,
              "nodeType": "Block",
              "src": "4528:75:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 1293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1283,
                                "name": "nameEntriesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1085,
                                "src": "4546:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                }
                              },
                              "id": 1285,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1284,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1276,
                                "src": "4563:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4546:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                              }
                            },
                            "id": 1289,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1286,
                                "name": "versions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1067,
                                "src": "4569:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 1288,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1287,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1276,
                                "src": "4578:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4569:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4546:38:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                              "typeString": "mapping(bytes32 => uint16)"
                            }
                          },
                          "id": 1291,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1290,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1278,
                            "src": "4585:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4546:44:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4546:49:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1294,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4545:51:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1282,
                  "id": 1295,
                  "nodeType": "Return",
                  "src": "4538:58:9"
                }
              ]
            },
            "documentation": "Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records",
            "id": 1297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1276,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4473:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1275,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4473:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1278,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4487:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1277,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4487:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:28:9"
            },
            "returnParameters": {
              "id": 1282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1281,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "4522:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1280,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4522:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4521:6:9"
            },
            "scope": 1458,
            "src": "4450:153:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1314,
              "nodeType": "Block",
              "src": "4802:68:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "4812:16:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1305,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1067,
                        "src": "4812:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 1307,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1306,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "4821:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4812:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1309,
                  "nodeType": "ExpressionStatement",
                  "src": "4812:16:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1311,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "4858:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1310,
                      "name": "DNSZoneCleared",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1063,
                      "src": "4843:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4843:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1313,
                  "nodeType": "EmitStatement",
                  "src": "4838:25:9"
                }
              ]
            },
            "documentation": "Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone",
            "id": 1315,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1302,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1299,
                    "src": "4796:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1303,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1301,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 629,
                  "src": "4785:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4785:16:9"
              }
            ],
            "name": "clearDNSZone",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1299,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "4764:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1298,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:14:9"
            },
            "returnParameters": {
              "id": 1304,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4802:0:9"
            },
            "scope": 1458,
            "src": "4742:128:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1331,
              "nodeType": "Block",
              "src": "4949:102:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1322,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1317,
                        "src": "4966:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1323,
                        "name": "DNS_RECORD_INTERFACE_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1041,
                        "src": "4981:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "4966:38:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1327,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1317,
                          "src": "5032:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1325,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4184,
                          "src": "5008:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_DNSResolver_$1458",
                            "typeString": "contract super DNSResolver"
                          }
                        },
                        "id": 1326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 610,
                        "src": "5008:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) pure returns (bool)"
                        }
                      },
                      "id": 1328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5008:36:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4966:78:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1321,
                  "id": 1330,
                  "nodeType": "Return",
                  "src": "4959:85:9"
                }
              ]
            },
            "documentation": null,
            "id": 1332,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1317,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1332,
                  "src": "4903:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1316,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4902:20:9"
            },
            "returnParameters": {
              "id": 1321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1320,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1332,
                  "src": "4943:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1319,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4943:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4942:6:9"
            },
            "scope": 1458,
            "src": "4876:175:9",
            "stateMutability": "pure",
            "superFunction": 610,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1456,
              "nodeType": "Block",
              "src": "5265:757:9",
              "statements": [
                {
                  "assignments": [
                    1350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1350,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5275:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5275:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1351,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1067,
                      "src": "5293:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 1353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1352,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1334,
                      "src": "5302:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5293:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5275:32:9"
                },
                {
                  "assignments": [
                    1356
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1356,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5317:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1355,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5317:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1360,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1358,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "5346:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1357,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4127,
                      "src": "5336:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5317:34:9"
                },
                {
                  "assignments": [
                    1362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1362,
                      "name": "rrData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1456,
                      "src": "5361:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1361,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5361:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1368,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1365,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1342,
                        "src": "5398:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1366,
                        "name": "size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1344,
                        "src": "5406:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1363,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1340,
                        "src": "5383:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2858,
                      "src": "5383:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 1367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5383:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5361:50:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1369,
                    "name": "deleteRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1346,
                    "src": "5425:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1454,
                    "nodeType": "Block",
                    "src": "5726:290:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1412,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1077,
                                      "src": "5744:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 1414,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1413,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1334,
                                      "src": "5752:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5744:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 1416,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1415,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1350,
                                    "src": "5758:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5744:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 1418,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1417,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1356,
                                  "src": "5767:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5744:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 1420,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1419,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1338,
                                "src": "5777:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5744:42:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 1421,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5744:49:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5797:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5744:54:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1434,
                        "nodeType": "IfStatement",
                        "src": "5740:136:9",
                        "trueBody": {
                          "id": 1433,
                          "nodeType": "Block",
                          "src": "5800:76:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5818:43:9",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1424,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1085,
                                        "src": "5818:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 1428,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1425,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5835:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5818:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 1429,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1426,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5841:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5818:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 1430,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1427,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5850:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5818:41:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1432,
                              "nodeType": "ExpressionStatement",
                              "src": "5818:43:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1435,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1077,
                                    "src": "5889:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                    }
                                  },
                                  "id": 1440,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1436,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1334,
                                    "src": "5897:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5889:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                  }
                                },
                                "id": 1441,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1437,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1350,
                                  "src": "5903:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5889:22:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                }
                              },
                              "id": 1442,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1438,
                                "name": "nameHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1356,
                                "src": "5912:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5889:32:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                "typeString": "mapping(uint16 => bytes storage ref)"
                              }
                            },
                            "id": 1443,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1439,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5922:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5889:42:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1444,
                            "name": "rrData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1362,
                            "src": "5934:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5889:51:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 1446,
                        "nodeType": "ExpressionStatement",
                        "src": "5889:51:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1448,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1334,
                              "src": "5976:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1449,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1336,
                              "src": "5982:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1450,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5988:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1451,
                              "name": "rrData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "5998:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1447,
                            "name": "DNSRecordChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1051,
                            "src": "5959:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory)"
                            }
                          },
                          "id": 1452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:46:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1453,
                        "nodeType": "EmitStatement",
                        "src": "5954:51:9"
                      }
                    ]
                  },
                  "id": 1455,
                  "nodeType": "IfStatement",
                  "src": "5421:595:9",
                  "trueBody": {
                    "id": 1411,
                    "nodeType": "Block",
                    "src": "5439:281:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1370,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1077,
                                      "src": "5457:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 1372,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1371,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1334,
                                      "src": "5465:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5457:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 1374,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1373,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1350,
                                    "src": "5471:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5457:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 1376,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1375,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1356,
                                  "src": "5480:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5457:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 1378,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1377,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1338,
                                "src": "5490:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5457:42:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 1379,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5457:49:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5510:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5457:54:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1392,
                        "nodeType": "IfStatement",
                        "src": "5453:136:9",
                        "trueBody": {
                          "id": 1391,
                          "nodeType": "Block",
                          "src": "5513:76:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5531:43:9",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1382,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1085,
                                        "src": "5531:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 1386,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1383,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5548:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5531:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 1387,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1384,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5554:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5531:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 1388,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1385,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5563:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5531:41:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 1390,
                              "nodeType": "ExpressionStatement",
                              "src": "5531:43:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5602:50:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1393,
                                        "name": "records",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1077,
                                        "src": "5609:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                        }
                                      },
                                      "id": 1395,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1394,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1334,
                                        "src": "5617:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5609:13:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                      }
                                    },
                                    "id": 1397,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1396,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1350,
                                      "src": "5623:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5609:22:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                    }
                                  },
                                  "id": 1399,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1398,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1356,
                                    "src": "5632:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5609:32:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint16 => bytes storage ref)"
                                  }
                                },
                                "id": 1401,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1400,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1338,
                                  "src": "5642:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5609:42:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "id": 1402,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5608:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1404,
                        "nodeType": "ExpressionStatement",
                        "src": "5602:50:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1406,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1334,
                              "src": "5688:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1407,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1336,
                              "src": "5694:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1408,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "5700:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 1405,
                            "name": "DNSRecordDeleted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1059,
                            "src": "5671:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16)"
                            }
                          },
                          "id": 1409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:38:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1410,
                        "nodeType": "EmitStatement",
                        "src": "5666:43:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1457,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDNSRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1334,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1336,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5109:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5109:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1338,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5136:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 1337,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5136:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1340,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5161:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1339,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5161:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1342,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5188:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1341,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5188:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1344,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5212:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1343,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1346,
                  "name": "deleteRecord",
                  "nodeType": "VariableDeclaration",
                  "scope": 1457,
                  "src": "5234:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1345,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5234:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5077:175:9"
            },
            "returnParameters": {
              "id": 1348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5265:0:9"
            },
            "scope": 1458,
            "src": "5057:965:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 1459,
        "src": "114:5910:9"
      }
    ],
    "src": "0:6025:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.8+commit.23d335f2.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-02-10T18:46:21.032Z",
  "devdoc": {
    "methods": {
      "clearDNSZone(bytes32)": {
        "params": {
          "node": "the namehash of the node for which to clear the zone"
        }
      },
      "dnsRecord(bytes32,bytes32,uint16)": {
        "params": {
          "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
          "node": "the namehash of the node for which to fetch the record",
          "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
        },
        "return": "the DNS record in wire format if present, otherwise empty"
      },
      "hasDNSRecords(bytes32,bytes32)": {
        "params": {
          "name": "the namehash of the node for which to check the records",
          "node": "the namehash of the node for which to check the records"
        }
      },
      "setDNSRecords(bytes32,bytes)": {
        "params": {
          "data": "the DNS wire format records to set",
          "node": "the namehash of the node for which to set the records"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "clearDNSZone(bytes32)": {
        "notice": "Clear all information for a DNS zone."
      },
      "dnsRecord(bytes32,bytes32,uint16)": {
        "notice": "Obtain a DNS record."
      },
      "hasDNSRecords(bytes32,bytes32)": {
        "notice": "Check if a given node has records."
      },
      "setDNSRecords(bytes32,bytes)": {
        "notice": "Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:    a.example.com IN A 1.2.3.4    a.example.com IN A 5.6.7.8    www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:    a.example.com IN A 1.2.3.4    www.example.com IN CNAME a.example.com.    a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."
      }
    }
  }
}