{
  "_format": "hh3-artifact-1",
  "contractName": "ENSRegistryWithFallback",
  "sourceName": "contracts/registry/ENSRegistryWithFallback.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ENS",
          "name": "_old",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "label",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "NewResolver",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "NewTTL",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "old",
      "outputs": [
        {
          "internalType": "contract ENS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "recordExists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "resolver",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setRecord",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "setResolver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "label",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setSubnodeOwner",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "label",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setSubnodeRecord",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint64",
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setTTL",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "ttl",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b50604051610f31380380610f31833981016040819052602c916085565b60008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054336001600160a01b031991821617909155600280549091166001600160a01b039290921691909117905560b3565b600060208284031215609657600080fd5b81516001600160a01b038116811460ac57600080fd5b9392505050565b610e6f806100c26000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80635b0fc9c31161008c578063b83f866311610066578063b83f8663146101e2578063cf40882314610202578063e985e9c514610215578063f79fe5381461026e57600080fd5b80635b0fc9c3146101a95780635ef2c7f0146101bc578063a22cb465146101cf57600080fd5b806314ab9038116100bd57806314ab90381461015557806316a25cbd1461016a5780631896f70a1461019657600080fd5b80630178b8bf146100e457806302571be31461012157806306ab592314610134575b600080fd5b6100f76100f2366004610c03565b6102a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f761012f366004610c03565b610396565b610147610142366004610c41565b61041f565b604051908152602001610118565b610168610163366004610c90565b610516565b005b61017d610178366004610c03565b610628565b60405167ffffffffffffffff9091168152602001610118565b6101686101a4366004610cc0565b61071d565b6101686101b7366004610cc0565b61082e565b6101686101ca366004610ce5565b6108f7565b6101686101dd366004610d44565b610919565b6002546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b610168610210366004610d77565b6109b0565b61025e610223366004610dca565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610118565b61025e61027c366004610c03565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610369576002546040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf906024015b602060405180830381865afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610df8565b92915050565b60008281526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff16610363565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610416576002546040517f02571be30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906302571be390602401610322565b610363826109cb565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610484575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61048d57600080fd5b604080516020808201899052818301889052825180830384018152606090920190925280519101206104bf8186610a00565b60405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061057b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61058457600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff166106e4576002546040517f16a25cbd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906316a25cbd90602401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610e1c565b60008281526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610363565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610782575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61078b57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610893575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61089c57600080fd5b6108a68484610a00565b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b600061090486868661041f565b9050610911818484610a75565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109ba848461082e565b6109c5848383610a75565b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103635750600092915050565b8073ffffffffffffffffffffffffffffffffffffffff8116610a1f5750305b600083815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055505050565b505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610b2d576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff828116740100000000000000000000000000000000000000009092041614610a70576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a2505050565b600060208284031215610c1557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3e57600080fd5b50565b600080600060608486031215610c5657600080fd5b83359250602084013591506040840135610c6f81610c1c565b809150509250925092565b67ffffffffffffffff81168114610c3e57600080fd5b60008060408385031215610ca357600080fd5b823591506020830135610cb581610c7a565b809150509250929050565b60008060408385031215610cd357600080fd5b823591506020830135610cb581610c1c565b600080600080600060a08688031215610cfd57600080fd5b85359450602086013593506040860135610d1681610c1c565b92506060860135610d2681610c1c565b91506080860135610d3681610c7a565b809150509295509295909350565b60008060408385031215610d5757600080fd5b8235610d6281610c1c565b915060208301358015158114610cb557600080fd5b60008060008060808587031215610d8d57600080fd5b843593506020850135610d9f81610c1c565b92506040850135610daf81610c1c565b91506060850135610dbf81610c7a565b939692955090935050565b60008060408385031215610ddd57600080fd5b8235610de881610c1c565b91506020830135610cb581610c1c565b600060208284031215610e0a57600080fd5b8151610e1581610c1c565b9392505050565b600060208284031215610e2e57600080fd5b8151610e1581610c7a56fea2646970667358221220da6d70ce686b4e355c14254282ff6c423733dfd71e6d97f93cf69c3ebf1003fa64736f6c634300081a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80635b0fc9c31161008c578063b83f866311610066578063b83f8663146101e2578063cf40882314610202578063e985e9c514610215578063f79fe5381461026e57600080fd5b80635b0fc9c3146101a95780635ef2c7f0146101bc578063a22cb465146101cf57600080fd5b806314ab9038116100bd57806314ab90381461015557806316a25cbd1461016a5780631896f70a1461019657600080fd5b80630178b8bf146100e457806302571be31461012157806306ab592314610134575b600080fd5b6100f76100f2366004610c03565b6102a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f761012f366004610c03565b610396565b610147610142366004610c41565b61041f565b604051908152602001610118565b610168610163366004610c90565b610516565b005b61017d610178366004610c03565b610628565b60405167ffffffffffffffff9091168152602001610118565b6101686101a4366004610cc0565b61071d565b6101686101b7366004610cc0565b61082e565b6101686101ca366004610ce5565b6108f7565b6101686101dd366004610d44565b610919565b6002546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b610168610210366004610d77565b6109b0565b61025e610223366004610dca565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610118565b61025e61027c366004610c03565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610369576002546040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf906024015b602060405180830381865afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610df8565b92915050565b60008281526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff16610363565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610416576002546040517f02571be30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906302571be390602401610322565b610363826109cb565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610484575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61048d57600080fd5b604080516020808201899052818301889052825180830384018152606090920190925280519101206104bf8186610a00565b60405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061057b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61058457600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff166106e4576002546040517f16a25cbd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906316a25cbd90602401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610e1c565b60008281526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610363565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610782575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61078b57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610893575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61089c57600080fd5b6108a68484610a00565b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b600061090486868661041f565b9050610911818484610a75565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109ba848461082e565b6109c5848383610a75565b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103635750600092915050565b8073ffffffffffffffffffffffffffffffffffffffff8116610a1f5750305b600083815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055505050565b505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610b2d576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff828116740100000000000000000000000000000000000000009092041614610a70576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a2505050565b600060208284031215610c1557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3e57600080fd5b50565b600080600060608486031215610c5657600080fd5b83359250602084013591506040840135610c6f81610c1c565b809150509250925092565b67ffffffffffffffff81168114610c3e57600080fd5b60008060408385031215610ca357600080fd5b823591506020830135610cb581610c7a565b809150509250929050565b60008060408385031215610cd357600080fd5b823591506020830135610cb581610c1c565b600080600080600060a08688031215610cfd57600080fd5b85359450602086013593506040860135610d1681610c1c565b92506060860135610d2681610c1c565b91506080860135610d3681610c7a565b809150509295509295909350565b60008060408385031215610d5757600080fd5b8235610d6281610c1c565b915060208301358015158114610cb557600080fd5b60008060008060808587031215610d8d57600080fd5b843593506020850135610d9f81610c1c565b92506040850135610daf81610c1c565b91506060850135610dbf81610c7a565b939692955090935050565b60008060408385031215610ddd57600080fd5b8235610de881610c1c565b91506020830135610cb581610c1c565b600060208284031215610e0a57600080fd5b8151610e1581610c1c565b9392505050565b600060208284031215610e2e57600080fd5b8151610e1581610c7a56fea2646970667358221220da6d70ce686b4e355c14254282ff6c423733dfd71e6d97f93cf69c3ebf1003fa64736f6c634300081a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/registry/ENSRegistryWithFallback.sol",
  "buildInfoId": "solc-0_8_26-f05bdccb11f2cf6df865fc6a27a95b5ace6017ea"
}