{
  "contractName": "ENS",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_label",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_resolver",
          "type": "address"
        }
      ],
      "name": "NewResolver",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_ttl",
          "type": "uint64"
        }
      ],
      "name": "NewTTL",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "ttl",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "label",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setSubnodeOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "setResolver",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setTTL",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"label\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_label\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"setOwner(bytes32,address)\":{\"params\":{\"node\":\"The node to transfer ownership of.\",\"owner\":\"The address of the new owner.\"}},\"setResolver(bytes32,address)\":{\"params\":{\"node\":\"The node to update.\",\"resolver\":\"The address of the resolver.\"}},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\"}},\"setTTL(bytes32,uint64)\":{\"params\":{\"node\":\"The node to update.\",\"ttl\":\"The TTL in seconds.\"}}}},\"userdoc\":{\"methods\":{\"owner(bytes32)\":{\"notice\":\"Returns the address that owns the specified node.\"},\"resolver(bytes32)\":{\"notice\":\"Returns the address of the resolver for the specified node.\"},\"setOwner(bytes32,address)\":{\"notice\":\"Transfers ownership of a node to a new address. May only be called by the current owner of the node.\"},\"setResolver(bytes32,address)\":{\"notice\":\"Sets the resolver address for the specified node.\"},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"notice\":\"Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\"},\"setTTL(bytes32,uint64)\":{\"notice\":\"Sets the TTL for the specified node.\"},\"ttl(bytes32)\":{\"notice\":\"Returns the TTL of a node, and any records associated with it.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/lib/ens/ENS.sol\":\"ENS\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/lib/ens/AbstractENS.sol\":{\"keccak256\":\"0x8deaa274dfc550c8251576dfa0dde1e58933728ced575de4f5b12391fd358c95\",\"urls\":[\"bzzr://8b03da0d3461879e624d00d27d32c0e28fbb7c13d934ca3bb261225c5632aa0b\"]},\"@aragon/os/contracts/lib/ens/ENS.sol\":{\"keccak256\":\"0x919b4beefbead7971bfe6a2a01025919d10091fd412b4e7ffaccc8661d7e2863\",\"urls\":[\"bzzr://0f92b33949e37e6f8d2fb52daa108fc3c823c3fdab4db04a9231c24012900109\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054600160a060020a031916331790556105f1806100596000396000f3006080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630178b8bf811461008757806302571be3146100c857806306ab5923146100e057806314ab90381461011657806316a25cbd1461013b5780631896f70a146101705780635b0fc9c3146101a1575b600080fd5b34801561009357600080fd5b5061009f6004356101d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100d457600080fd5b5061009f6004356101fd565b3480156100ec57600080fd5b5061011460043560243573ffffffffffffffffffffffffffffffffffffffff60443516610225565b005b34801561012257600080fd5b5061011460043567ffffffffffffffff60243516610311565b34801561014757600080fd5b506101536004356103e7565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561017c57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff6024351661041e565b3480156101ad57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff602435166104f3565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff16331461025757600080fd5b6040805186815260208082018790528251918290038301822073ffffffffffffffffffffffffffffffffffffffff871683529251929450869288927fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8292908290030190a350600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461034357600080fd5b6040805167ffffffffffffffff84168152905184917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68919081900360200190a250600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461045057600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0919081900360200190a25060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461052557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266919081900360200190a25060009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555600a165627a7a7230582088b57730c969823e07e74280dd3f5cf5bf5635f6716de10d2a1c37e6eb8844e10029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630178b8bf811461008757806302571be3146100c857806306ab5923146100e057806314ab90381461011657806316a25cbd1461013b5780631896f70a146101705780635b0fc9c3146101a1575b600080fd5b34801561009357600080fd5b5061009f6004356101d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100d457600080fd5b5061009f6004356101fd565b3480156100ec57600080fd5b5061011460043560243573ffffffffffffffffffffffffffffffffffffffff60443516610225565b005b34801561012257600080fd5b5061011460043567ffffffffffffffff60243516610311565b34801561014757600080fd5b506101536004356103e7565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561017c57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff6024351661041e565b3480156101ad57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff602435166104f3565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff16331461025757600080fd5b6040805186815260208082018790528251918290038301822073ffffffffffffffffffffffffffffffffffffffff871683529251929450869288927fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8292908290030190a350600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461034357600080fd5b6040805167ffffffffffffffff84168152905184917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68919081900360200190a250600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461045057600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0919081900360200190a25060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461052557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266919081900360200190a25060009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555600a165627a7a7230582088b57730c969823e07e74280dd3f5cf5bf5635f6716de10d2a1c37e6eb8844e10029",
  "sourceMap": "169:2590:55:-;;;575:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;607:7:55;:10;;;;;;:29;;-1:-1:-1;;;;;;607:29:55;626:10;607:29;;;169:2590;;;;;;",
  "deployedSourceMap": "169:2590:55:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;917:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;917:112:55;;;;;;;;;;;;;;;;;;;;;;;;722:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;722:106:55;;;;;1923:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1923:224:55;;;;;;;;;;;;;2624:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2624:133:55;;;;;;;;;1121:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1121:101:55;;;;;;;;;;;;;;;;;;;;;;;;2317:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2317:164:55;;;;;;;;;1463:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1463:146:55;;;;;;;;;917:112;974:7;1000:13;;;;;;;;;;:22;;;;;;917:112::o;722:106::-;776:7;802:13;;;;;;;;;;:19;;;;722:106::o;1923:224::-;2026:11;456:13;;;;;;;;;;:19;2003:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2040:22;;;;;;;;;;;;;;;;;;;;;;;2072:28;;;;;;;2040:22;;-1:-1:-1;2056:5:55;;2050:4;;2072:28;;;;;;;;;-1:-1:-1;2110:7:55;:16;;;;;;;;;;:30;;;;;;;;;;;;;;;-1:-1:-1;;1923:224:55:o;2624:133::-;456:7;:13;;;;;;;;;;:19;2677:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2700:17;;;;;;;;;;2707:4;;2700:17;;;;;;;;;;-1:-1:-1;2727:7:55;:13;;;;;;;;;;;:17;;:23;;;;;;;;;;;;;;;;;;2624:133::o;1121:101::-;1173:6;1198:13;;;;;;;;;;:17;;;;;;;;;1121:101::o;2317:164::-;456:7;:13;;;;;;;;;;:19;2381:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2404:27;;;;;;;;;;2416:4;;2404:27;;;;;;;;;;-1:-1:-1;2441:7:55;:13;;;;;;;;;;;:22;;:33;;;;;;;;;;;;;;2317:164::o;1463:146::-;456:7;:13;;;;;;;;;;:19;1521:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;1544:21;;;;;;;;;;1553:4;;1544:21;;;;;;;;;;-1:-1:-1;1575:7:55;:13;;;;;;;;;;;:27;;;;;;;;;;;;;;1463:146::o",
  "source": "// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/ENS.sol\n\npragma solidity ^0.4.0;\n\n\nimport \"./AbstractENS.sol\";\n\n/**\n * The ENS registry contract.\n */\ncontract ENS is AbstractENS {\n    struct Record {\n        address owner;\n        address resolver;\n        uint64 ttl;\n    }\n\n    mapping(bytes32=>Record) records;\n\n    // Permits modifications only by the owner of the specified node.\n    modifier only_owner(bytes32 node) {\n        if (records[node].owner != msg.sender) throw;\n        _;\n    }\n\n    /**\n     * Constructs a new ENS registrar.\n     */\n    function ENS() public {\n        records[0].owner = msg.sender;\n    }\n\n    /**\n     * Returns the address that owns the specified node.\n     */\n    function owner(bytes32 node) public constant returns (address) {\n        return records[node].owner;\n    }\n\n    /**\n     * Returns the address of the resolver for the specified node.\n     */\n    function resolver(bytes32 node) public constant returns (address) {\n        return records[node].resolver;\n    }\n\n    /**\n     * Returns the TTL of a node, and any records associated with it.\n     */\n    function ttl(bytes32 node) public constant returns (uint64) {\n        return records[node].ttl;\n    }\n\n    /**\n     * Transfers ownership of a node to a new address. May only be called by the current\n     * owner of the node.\n     * @param node The node to transfer ownership of.\n     * @param owner The address of the new owner.\n     */\n    function setOwner(bytes32 node, address owner) only_owner(node) public {\n        Transfer(node, owner);\n        records[node].owner = owner;\n    }\n\n    /**\n     * Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\n     * called by the owner of the parent node.\n     * @param node The parent node.\n     * @param label The hash of the label specifying the subnode.\n     * @param owner The address of the new owner.\n     */\n    function setSubnodeOwner(bytes32 node, bytes32 label, address owner) only_owner(node) public {\n        var subnode = keccak256(node, label);\n        NewOwner(node, label, owner);\n        records[subnode].owner = owner;\n    }\n\n    /**\n     * Sets the resolver address for the specified node.\n     * @param node The node to update.\n     * @param resolver The address of the resolver.\n     */\n    function setResolver(bytes32 node, address resolver) only_owner(node) public {\n        NewResolver(node, resolver);\n        records[node].resolver = resolver;\n    }\n\n    /**\n     * Sets the TTL for the specified node.\n     * @param node The node to update.\n     * @param ttl The TTL in seconds.\n     */\n    function setTTL(bytes32 node, uint64 ttl) only_owner(node) public {\n        NewTTL(node, ttl);\n        records[node].ttl = ttl;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/lib/ens/ENS.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
    "exportedSymbols": {
      "ENS": [
        9088
      ]
    },
    "id": 9089,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8906,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "76:23:55"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 8907,
        "nodeType": "ImportDirective",
        "scope": 9089,
        "sourceUnit": 8905,
        "src": "102:27:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8908,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8904,
              "src": "185:11:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$8904",
                "typeString": "contract AbstractENS"
              }
            },
            "id": 8909,
            "nodeType": "InheritanceSpecifier",
            "src": "185:11:55"
          }
        ],
        "contractDependencies": [
          8904
        ],
        "contractKind": "contract",
        "documentation": "The ENS registry contract.",
        "fullyImplemented": true,
        "id": 9088,
        "linearizedBaseContracts": [
          9088,
          8904
        ],
        "name": "ENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "ENS.Record",
            "id": 8916,
            "members": [
              {
                "constant": false,
                "id": 8911,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "227:13:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8910,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "227:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 8913,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "250:16:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8912,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "250:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 8915,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "276:10:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 8914,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "276:6:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 9088,
            "src": "203:90:55",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8920,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 9088,
            "src": "299:32:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
              "typeString": "mapping(bytes32 => struct ENS.Record)"
            },
            "typeName": {
              "id": 8919,
              "keyType": {
                "id": 8917,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "307:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "299:24:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                "typeString": "mapping(bytes32 => struct ENS.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 8918,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 8916,
                "src": "316:6:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$8916_storage_ptr",
                  "typeString": "struct ENS.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8934,
              "nodeType": "Block",
              "src": "442:72:55",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8924,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "456:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 8926,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 8925,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8922,
                          "src": "464:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "456:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 8927,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "456:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8928,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "479:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 8929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "479:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "456:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8932,
                  "nodeType": "IfStatement",
                  "src": "452:44:55",
                  "trueBody": {
                    "id": 8931,
                    "nodeType": "Throw",
                    "src": "491:5:55"
                  }
                },
                {
                  "id": 8933,
                  "nodeType": "PlaceholderStatement",
                  "src": "506:1:55"
                }
              ]
            },
            "documentation": null,
            "id": 8935,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 8923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8922,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8935,
                  "src": "428:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8921,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:55"
            },
            "src": "408:106:55",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8946,
              "nodeType": "Block",
              "src": "597:46:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8938,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "607:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 8940,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "615:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "607:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 8941,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "607:16:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8942,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "626:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 8943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "626:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "607:29:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8945,
                  "nodeType": "ExpressionStatement",
                  "src": "607:29:55"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 8947,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ENS",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8936,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:2:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "597:0:55"
            },
            "scope": 9088,
            "src": "575:68:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8959,
              "nodeType": "Block",
              "src": "785:43:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8954,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "802:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8956,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8955,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8949,
                        "src": "810:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "802:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8957,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8911,
                    "src": "802:19:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8953,
                  "id": 8958,
                  "nodeType": "Return",
                  "src": "795:26:55"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 8960,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8949,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8960,
                  "src": "737:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8948,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "737:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "736:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8952,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8960,
                  "src": "776:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:9:55"
            },
            "scope": 9088,
            "src": "722:106:55",
            "stateMutability": "view",
            "superFunction": 8833,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8972,
              "nodeType": "Block",
              "src": "983:46:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8967,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "1000:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8969,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8968,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8962,
                        "src": "1008:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1000:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8970,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8913,
                    "src": "1000:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8966,
                  "id": 8971,
                  "nodeType": "Return",
                  "src": "993:29:55"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 8973,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8962,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8973,
                  "src": "935:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8961,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8965,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8973,
                  "src": "974:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:9:55"
            },
            "scope": 9088,
            "src": "917:112:55",
            "stateMutability": "view",
            "superFunction": 8840,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8985,
              "nodeType": "Block",
              "src": "1181:41:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8980,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "1198:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8982,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8981,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8975,
                        "src": "1206:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1198:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8983,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8915,
                    "src": "1198:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 8979,
                  "id": 8984,
                  "nodeType": "Return",
                  "src": "1191:24:55"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 8986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8975,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "1134:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8974,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1133:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8978,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "1173:6:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 8977,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:8:55"
            },
            "scope": 9088,
            "src": "1121:101:55",
            "stateMutability": "view",
            "superFunction": 8847,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9008,
              "nodeType": "Block",
              "src": "1534:75:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8997,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8988,
                        "src": "1553:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8998,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8990,
                        "src": "1559:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8996,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8891,
                      "src": "1544:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 8999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9000,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:21:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9001,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "1575:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9003,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9002,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8988,
                          "src": "1583:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9004,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "1575:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9005,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8990,
                      "src": "1597:5:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1575:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9007,
                  "nodeType": "ExpressionStatement",
                  "src": "1575:27:55"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.",
            "id": 9009,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8993,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8988,
                    "src": "1521:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 8994,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8992,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "1510:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1510:16:55"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8988,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "1481:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8987,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8990,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "1495:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1480:29:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8995,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1534:0:55"
            },
            "scope": 9088,
            "src": "1463:146:55",
            "stateMutability": "nonpayable",
            "superFunction": 8854,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9040,
              "nodeType": "Block",
              "src": "2016:131:55",
              "statements": [
                {
                  "assignments": [
                    9021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9021,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 9041,
                      "src": "2026:11:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9026,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9023,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9011,
                        "src": "2050:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9024,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9013,
                        "src": "2056:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9022,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10398,
                      "src": "2040:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 9025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2026:36:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9028,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9011,
                        "src": "2081:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9029,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9013,
                        "src": "2087:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9030,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9015,
                        "src": "2094:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9027,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8885,
                      "src": "2072:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 9031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9032,
                  "nodeType": "ExpressionStatement",
                  "src": "2072:28:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9033,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2110:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9035,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9034,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9021,
                          "src": "2118:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2110:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "2110:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9037,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9015,
                      "src": "2135:5:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2110:30:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9039,
                  "nodeType": "ExpressionStatement",
                  "src": "2110:30:55"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.",
            "id": 9041,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9018,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9011,
                    "src": "2003:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9019,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9017,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "1992:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1992:16:55"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9011,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1948:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9010,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9013,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1962:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9012,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9015,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1977:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9014,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1947:44:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9020,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:55"
            },
            "scope": 9088,
            "src": "1923:224:55",
            "stateMutability": "nonpayable",
            "superFunction": 8863,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9063,
              "nodeType": "Block",
              "src": "2394:87:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9052,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9043,
                        "src": "2416:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9053,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9045,
                        "src": "2422:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9051,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8897,
                      "src": "2404:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 9054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2404:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9055,
                  "nodeType": "ExpressionStatement",
                  "src": "2404:27:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9056,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2441:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9058,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9057,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9043,
                          "src": "2449:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2441:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9059,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8913,
                      "src": "2441:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9060,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9045,
                      "src": "2466:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2441:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9062,
                  "nodeType": "ExpressionStatement",
                  "src": "2441:33:55"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.",
            "id": 9064,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9048,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9043,
                    "src": "2381:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9049,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9047,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "2370:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2370:16:55"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9043,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9064,
                  "src": "2338:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9042,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2338:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9045,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 9064,
                  "src": "2352:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2337:32:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2394:0:55"
            },
            "scope": 9088,
            "src": "2317:164:55",
            "stateMutability": "nonpayable",
            "superFunction": 8870,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9086,
              "nodeType": "Block",
              "src": "2690:67:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9075,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9066,
                        "src": "2707:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9076,
                        "name": "ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9068,
                        "src": "2713:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 9074,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8903,
                      "src": "2700:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 9077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2700:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9078,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:17:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9079,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2727:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9081,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9080,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9066,
                          "src": "2735:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2727:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9082,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8915,
                      "src": "2727:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9083,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9068,
                      "src": "2747:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2727:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 9085,
                  "nodeType": "ExpressionStatement",
                  "src": "2727:23:55"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.",
            "id": 9087,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9071,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9066,
                    "src": "2677:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9072,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9070,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "2666:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2666:16:55"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9066,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9087,
                  "src": "2640:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9068,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 9087,
                  "src": "2654:10:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 9067,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2639:26:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9073,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2690:0:55"
            },
            "scope": 9088,
            "src": "2624:133:55",
            "stateMutability": "nonpayable",
            "superFunction": 8877,
            "visibility": "public"
          }
        ],
        "scope": 9089,
        "src": "169:2590:55"
      }
    ],
    "src": "76:2684:55"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
    "exportedSymbols": {
      "ENS": [
        9088
      ]
    },
    "id": 9089,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8906,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "76:23:55"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 8907,
        "nodeType": "ImportDirective",
        "scope": 9089,
        "sourceUnit": 8905,
        "src": "102:27:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8908,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8904,
              "src": "185:11:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$8904",
                "typeString": "contract AbstractENS"
              }
            },
            "id": 8909,
            "nodeType": "InheritanceSpecifier",
            "src": "185:11:55"
          }
        ],
        "contractDependencies": [
          8904
        ],
        "contractKind": "contract",
        "documentation": "The ENS registry contract.",
        "fullyImplemented": true,
        "id": 9088,
        "linearizedBaseContracts": [
          9088,
          8904
        ],
        "name": "ENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "ENS.Record",
            "id": 8916,
            "members": [
              {
                "constant": false,
                "id": 8911,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "227:13:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8910,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "227:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 8913,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "250:16:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8912,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "250:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 8915,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 8916,
                "src": "276:10:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 8914,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "276:6:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 9088,
            "src": "203:90:55",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8920,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 9088,
            "src": "299:32:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
              "typeString": "mapping(bytes32 => struct ENS.Record)"
            },
            "typeName": {
              "id": 8919,
              "keyType": {
                "id": 8917,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "307:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "299:24:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                "typeString": "mapping(bytes32 => struct ENS.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 8918,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 8916,
                "src": "316:6:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$8916_storage_ptr",
                  "typeString": "struct ENS.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8934,
              "nodeType": "Block",
              "src": "442:72:55",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8924,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "456:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 8926,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 8925,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8922,
                          "src": "464:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "456:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 8927,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "456:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8928,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "479:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 8929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "479:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "456:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8932,
                  "nodeType": "IfStatement",
                  "src": "452:44:55",
                  "trueBody": {
                    "id": 8931,
                    "nodeType": "Throw",
                    "src": "491:5:55"
                  }
                },
                {
                  "id": 8933,
                  "nodeType": "PlaceholderStatement",
                  "src": "506:1:55"
                }
              ]
            },
            "documentation": null,
            "id": 8935,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 8923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8922,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8935,
                  "src": "428:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8921,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:55"
            },
            "src": "408:106:55",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8946,
              "nodeType": "Block",
              "src": "597:46:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8938,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "607:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 8940,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "615:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "607:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 8941,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "607:16:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8942,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "626:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 8943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "626:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "607:29:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8945,
                  "nodeType": "ExpressionStatement",
                  "src": "607:29:55"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 8947,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ENS",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8936,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:2:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "597:0:55"
            },
            "scope": 9088,
            "src": "575:68:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8959,
              "nodeType": "Block",
              "src": "785:43:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8954,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "802:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8956,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8955,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8949,
                        "src": "810:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "802:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8957,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8911,
                    "src": "802:19:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8953,
                  "id": 8958,
                  "nodeType": "Return",
                  "src": "795:26:55"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 8960,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8949,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8960,
                  "src": "737:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8948,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "737:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "736:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8952,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8960,
                  "src": "776:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:9:55"
            },
            "scope": 9088,
            "src": "722:106:55",
            "stateMutability": "view",
            "superFunction": 8833,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8972,
              "nodeType": "Block",
              "src": "983:46:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8967,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "1000:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8969,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8968,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8962,
                        "src": "1008:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1000:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8970,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8913,
                    "src": "1000:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8966,
                  "id": 8971,
                  "nodeType": "Return",
                  "src": "993:29:55"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 8973,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8962,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8973,
                  "src": "935:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8961,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8965,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8973,
                  "src": "974:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:9:55"
            },
            "scope": 9088,
            "src": "917:112:55",
            "stateMutability": "view",
            "superFunction": 8840,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8985,
              "nodeType": "Block",
              "src": "1181:41:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8980,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8920,
                        "src": "1198:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 8982,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8981,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8975,
                        "src": "1206:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1198:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$8916_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 8983,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8915,
                    "src": "1198:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 8979,
                  "id": 8984,
                  "nodeType": "Return",
                  "src": "1191:24:55"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 8986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8975,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "1134:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8974,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1133:14:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8978,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "1173:6:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 8977,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:8:55"
            },
            "scope": 9088,
            "src": "1121:101:55",
            "stateMutability": "view",
            "superFunction": 8847,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9008,
              "nodeType": "Block",
              "src": "1534:75:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8997,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8988,
                        "src": "1553:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8998,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8990,
                        "src": "1559:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8996,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8891,
                      "src": "1544:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 8999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9000,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:21:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9001,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "1575:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9003,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9002,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8988,
                          "src": "1583:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9004,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "1575:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9005,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8990,
                      "src": "1597:5:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1575:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9007,
                  "nodeType": "ExpressionStatement",
                  "src": "1575:27:55"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.",
            "id": 9009,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8993,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8988,
                    "src": "1521:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 8994,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8992,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "1510:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1510:16:55"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8988,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "1481:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8987,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8990,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "1495:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1480:29:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 8995,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1534:0:55"
            },
            "scope": 9088,
            "src": "1463:146:55",
            "stateMutability": "nonpayable",
            "superFunction": 8854,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9040,
              "nodeType": "Block",
              "src": "2016:131:55",
              "statements": [
                {
                  "assignments": [
                    9021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9021,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 9041,
                      "src": "2026:11:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9026,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9023,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9011,
                        "src": "2050:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9024,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9013,
                        "src": "2056:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9022,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10398,
                      "src": "2040:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 9025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2026:36:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9028,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9011,
                        "src": "2081:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9029,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9013,
                        "src": "2087:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9030,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9015,
                        "src": "2094:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9027,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8885,
                      "src": "2072:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 9031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9032,
                  "nodeType": "ExpressionStatement",
                  "src": "2072:28:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9033,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2110:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9035,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9034,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9021,
                          "src": "2118:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2110:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8911,
                      "src": "2110:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9037,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9015,
                      "src": "2135:5:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2110:30:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9039,
                  "nodeType": "ExpressionStatement",
                  "src": "2110:30:55"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.",
            "id": 9041,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9018,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9011,
                    "src": "2003:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9019,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9017,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "1992:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1992:16:55"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9011,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1948:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9010,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9013,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1962:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9012,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9015,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 9041,
                  "src": "1977:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9014,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1947:44:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9020,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:55"
            },
            "scope": 9088,
            "src": "1923:224:55",
            "stateMutability": "nonpayable",
            "superFunction": 8863,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9063,
              "nodeType": "Block",
              "src": "2394:87:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9052,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9043,
                        "src": "2416:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9053,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9045,
                        "src": "2422:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9051,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8897,
                      "src": "2404:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 9054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2404:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9055,
                  "nodeType": "ExpressionStatement",
                  "src": "2404:27:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9056,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2441:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9058,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9057,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9043,
                          "src": "2449:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2441:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9059,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8913,
                      "src": "2441:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9060,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9045,
                      "src": "2466:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2441:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9062,
                  "nodeType": "ExpressionStatement",
                  "src": "2441:33:55"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.",
            "id": 9064,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9048,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9043,
                    "src": "2381:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9049,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9047,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "2370:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2370:16:55"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9043,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9064,
                  "src": "2338:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9042,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2338:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9045,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 9064,
                  "src": "2352:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2337:32:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2394:0:55"
            },
            "scope": 9088,
            "src": "2317:164:55",
            "stateMutability": "nonpayable",
            "superFunction": 8870,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9086,
              "nodeType": "Block",
              "src": "2690:67:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9075,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9066,
                        "src": "2707:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9076,
                        "name": "ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9068,
                        "src": "2713:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 9074,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8903,
                      "src": "2700:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 9077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2700:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9078,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:17:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9079,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8920,
                          "src": "2727:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$8916_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 9081,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9080,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9066,
                          "src": "2735:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2727:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$8916_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 9082,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8915,
                      "src": "2727:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9083,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9068,
                      "src": "2747:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2727:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 9085,
                  "nodeType": "ExpressionStatement",
                  "src": "2727:23:55"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.",
            "id": 9087,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9071,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9066,
                    "src": "2677:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9072,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9070,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8935,
                  "src": "2666:10:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2666:16:55"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9066,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9087,
                  "src": "2640:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9068,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 9087,
                  "src": "2654:10:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 9067,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2639:26:55"
            },
            "payable": false,
            "returnParameters": {
              "id": 9073,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2690:0:55"
            },
            "scope": 9088,
            "src": "2624:133:55",
            "stateMutability": "nonpayable",
            "superFunction": 8877,
            "visibility": "public"
          }
        ],
        "scope": 9089,
        "src": "169:2590:55"
      }
    ],
    "src": "76:2684:55"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.610Z",
  "devdoc": {
    "methods": {
      "setOwner(bytes32,address)": {
        "params": {
          "node": "The node to transfer ownership of.",
          "owner": "The address of the new owner."
        }
      },
      "setResolver(bytes32,address)": {
        "params": {
          "node": "The node to update.",
          "resolver": "The address of the resolver."
        }
      },
      "setSubnodeOwner(bytes32,bytes32,address)": {
        "params": {
          "label": "The hash of the label specifying the subnode.",
          "node": "The parent node.",
          "owner": "The address of the new owner."
        }
      },
      "setTTL(bytes32,uint64)": {
        "params": {
          "node": "The node to update.",
          "ttl": "The TTL in seconds."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "owner(bytes32)": {
        "notice": "Returns the address that owns the specified node."
      },
      "resolver(bytes32)": {
        "notice": "Returns the address of the resolver for the specified node."
      },
      "setOwner(bytes32,address)": {
        "notice": "Transfers ownership of a node to a new address. May only be called by the current owner of the node."
      },
      "setResolver(bytes32,address)": {
        "notice": "Sets the resolver address for the specified node."
      },
      "setSubnodeOwner(bytes32,bytes32,address)": {
        "notice": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node."
      },
      "setTTL(bytes32,uint64)": {
        "notice": "Sets the TTL for the specified node."
      },
      "ttl(bytes32)": {
        "notice": "Returns the TTL of a node, and any records associated with it."
      }
    }
  }
}