{
  "_format": "hh3-artifact-1",
  "contractName": "OffchainDNSResolver",
  "sourceName": "contracts/dnsregistrar/OffchainDNSResolver.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ENS",
          "name": "_ens",
          "type": "address"
        },
        {
          "internalType": "contract DNSSEC",
          "name": "_oracle",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_gatewayURL",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        }
      ],
      "name": "CouldNotResolve",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidOperation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "urls",
          "type": "string[]"
        },
        {
          "internalType": "bytes",
          "name": "callData",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "callbackFunction",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "OffchainLookup",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "OffsetOutOfBoundsError",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "internalType": "contract ENS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gatewayURL",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "contract DNSSEC",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "resolve",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "response",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "resolveCallback",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b506040516128b13803806128b183398101604081905261002f91610085565b6001600160a01b03808416608052821660a052600061004e8282610201565b505050506102bf565b6001600160a01b038116811461006c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561009a57600080fd5b83516100a581610057565b60208501519093506100b681610057565b60408501519092506001600160401b038111156100d257600080fd5b8401601f810186136100e357600080fd5b80516001600160401b038111156100fc576100fc61006f565b604051601f8201601f19908116603f011681016001600160401b038111828210171561012a5761012a61006f565b60405281815282820160200188101561014257600080fd5b60005b8281101561016157602081850181015183830182015201610145565b506000602083830101528093505050509250925092565b600181811c9082168061018c57607f821691505b6020821081036101ac57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fc57806000526020600020601f840160051c810160208510156101d95750805b601f840160051c820191505b818110156101f957600081556001016101e5565b50505b505050565b81516001600160401b0381111561021a5761021a61006f565b61022e816102288454610178565b846101b2565b6020601f821160018114610262576000831561024a5750848201515b600019600385901b1c1916600184901b1784556101f9565b600084815260208120601f198516915b828110156102925787850151825560209485019460019092019101610272565b50848210156102b05786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516125c06102f16000396000818161014701526103f101526000818160e601526114e801526125c06000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80637dc0d1d0116100505780637dc0d1d0146101425780639061b92314610169578063b4a858011461017c57600080fd5b806301ffc9a7146100775780633f15457f146100e1578063525399681461012d575b600080fd5b6100cc61008536600461198e565b7fffffffff00000000000000000000000000000000000000000000000000000000167f9061b923000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6101087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d8565b61013561018f565b6040516100d89190611a19565b6101087f000000000000000000000000000000000000000000000000000000000000000081565b610135610177366004611a75565b61021d565b61013561018a366004611a75565b61029a565b6000805461019c90611ae6565b80601f01602080910402602001604051908101604052809291908181526020018280546101c890611ae6565b80156102155780601f106101ea57610100808354040283529160200191610215565b820191906000526020600020905b8154815290600101906020018083116101f857829003601f168201915b505050505081565b606061029285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061090392505050565b949350505050565b6060600080806102ac85870187611c7c565b919450925090507fffffffff000000000000000000000000000000000000000000000000000000008116156103dd57600080838060200190518101906102f29190611d6b565b915091506103d1818686868e8e8830604051602001610312929190611dbd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261034f939291602401611df5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610afe565b95505050505050610292565b60006103eb888a018a611e75565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef836040518263ffffffff1660e01b81526004016104489190611fbb565b600060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190612065565b50905060006104ba8282610c0a565b90505b805151602082015110156108ce5760006104df82600001518360200151610c71565b90506104eb8188610c8c565b15806105005750606082015161ffff16600114155b806105145750604082015161ffff16601014155b1561051f57506108c0565b60008061053984600001518560a001518660c00151610cb3565b909250905073ffffffffffffffffffffffffffffffffffffffff8216156108bc576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f8ef98a7e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8316906301ffc9a790602401602060405180830381865afa1580156105e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060891906120b5565b156106b3576106a3828a8a8c8c86604051602401610628939291906120d7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8ef98a7e00000000000000000000000000000000000000000000000000000000179052610afe565b9950505050505050505050610292565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f9061b92300000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8316906301ffc9a790602401602060405180830381865afa15801561073d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076191906120b5565b156107fa576106a3828a8a8c8c60405160240161077f929190612110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b92300000000000000000000000000000000000000000000000000000000179052610afe565b6000808373ffffffffffffffffffffffffffffffffffffffff168a6040516108229190612135565b600060405180830381855afa9150503d806000811461085d576040519150601f19603f3d011682016040523d82523d6000602084013e610862565b606091505b5091509150811561087f579a506102929950505050505050505050565b8a6040517f29a76c060000000000000000000000000000000000000000000000000000000081526004016108b39190611a19565b60405180910390fd5b5050505b6108c981610dfb565b6104bd565b50846040517f29a76c060000000000000000000000000000000000000000000000000000000081526004016108b39190611a19565b604080516001808252818301909252600091816020015b606081526020019060019003908161091a5790505090506000805461093e90611ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90611ae6565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050816000815181106109cf576109cf612151565b602002602001018190525030818460106040516024016109f0929190612180565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f31b137b90000000000000000000000000000000000000000000000000000000017905290517fb4a858010000000000000000000000000000000000000000000000000000000091610a9c9189918991600091016121a6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f556f18300000000000000000000000000000000000000000000000000000000082526108b395949392916004016121fe565b606073ffffffffffffffffffffffffffffffffffffffff85163b610b2657610b268484610903565b6000610b328684610ee3565b90503d8115610b68576000610b48600083610ef0565b905080806020019051810190610b5e91906122ef565b9350505050610292565b60048110610bf8576000610b7e60006004610ef0565b90507f556f183000000000000000000000000000000000000000000000000000000000610baa82612324565b7fffffffff000000000000000000000000000000000000000000000000000000001603610bf6576000610be76004610be281866123bf565b610ef0565b9050610bf4818a8a610f45565b505b505b610c00610ff0565b5050949350505050565b610c586040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610c6b81610dfb565b92915050565b60606000610c7f8484610ffa565b9050610292848483611054565b600081518351148015610cac575081805190602001208380519060200120145b9392505050565b600060606000610cc48686866110aa565b9050600581511080610d1957506040805180820190915260058082527f454e5331200000000000000000000000000000000000000000000000000000006020830152610d179183916000919082906110f4565b155b15610d37575050604080516020810190915260008082529150610df3565b6000610d746005808451610d4b91906123bf565b8491907f2000000000000000000000000000000000000000000000000000000000000000611117565b90508151811115610dab576000610d8e83600585516111cf565b6040805160208101909152600081529095509350610df392505050565b6000610db9836005846111cf565b905080610deb610dca8460016123d2565b6001858751610dd991906123bf565b610de391906123bf565b869190611054565b945094505050505b935093915050565b60c08101516020820181905281515111610e125750565b6000610e2682600001518360200151610ffa565b8260200151610e3591906123d2565b8251909150610e4490826112d9565b61ffff166040830152610e586002826123d2565b8251909150610e6790826112d9565b61ffff166060830152610e7b6002826123d2565b8251909150610e8a90826112fb565b63ffffffff166080830152610ea06004826123d2565b8251909150600090610eb290836112d9565b61ffff169050610ec36002836123d2565b60a084018190529150610ed681836123d2565b60c0909301929092525050565b6000610cac83835a611318565b60608167ffffffffffffffff811115610f0b57610f0b611b39565b6040519080825280601f01601f191660200182016040528015610f35576020820181803683370190505b5090508183602083013e92915050565b600080600080600087806020019051810190610f6191906123f5565b945094509450945094508673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30848463b4a8580160e01b898587604051602001610a9c939291906121a6565b3d6000803e3d6000fd5b6000815b8351811061100e5761100e61253e565b600061101a85836113d2565b60ff16905061102a8160016123d2565b61103490836123d2565b915080600003611044575061104a565b50610ffe565b61029283826123bf565b60608167ffffffffffffffff81111561106f5761106f611b39565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050610cac848483600086611405565b606060006110b885856113d2565b60ff169050826110c882866123d2565b106110d5576110d561253e565b6110eb6110e38560016123d2565b869083611054565b95945050505050565b600061110184848461143d565b61110c87878561143d565b149695505050505050565b60008061112484866123d2565b90505b808510156111a457827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191686868151811061116457611164612151565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016036111995784915050610292565b600190940193611127565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95945050505050565b60008383815181106111e3576111e3612151565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f300000000000000000000000000000000000000000000000000000000000000014801561129b5750836112408460016123d2565b8151811061125057611250612151565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7800000000000000000000000000000000000000000000000000000000000000145b156112ce576000806112b96112b18660026123d2565b879086611457565b9150915080156112cb57509050610cac565b50505b610292848484611490565b60006112ef836112ea8460026123d2565b611614565b50016020015160f01c90565b600061130c836112ea8460046123d2565b50016020015160e01c90565b600073ffffffffffffffffffffffffffffffffffffffff84163b6113be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c207460448201527f6f206e6f6e2d636f6e747261637400000000000000000000000000000000000060648201526084016108b3565b6000808451602086018786fa949350505050565b60006113e3836112ea8460016123d2565b8282815181106113f5576113f5612151565b016020015160f81c905092915050565b611413856112ea83876123d2565b611421836112ea83856123d2565b61143682602085010185602088010183611660565b5050505050565b600061144d846112ea84866123d2565b5091016020012090565b600080826114668560286123d2565b1461147657506000905080610df3565b60006114838686866116e6565b9097909650945050505050565b60008061149e85858561175e565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630178b8bf90602401602060405180830381865afa15801561152f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611553919061256d565b905073ffffffffffffffffffffffffffffffffffffffff811661157b57600092505050610cac565b6040517f3b3b57de0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff821690633b3b57de90602401602060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a919061256d565b9695505050505050565b815181111561165c5781516040517f8a3c1cfb0000000000000000000000000000000000000000000000000000000081526108b3918391600401918252602082015260400190565b5050565b5b601f81111561169f5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001611661565b80156116e157815183516001602084900360031b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161783525b505050565b600080838310156116fc57506000905080610df3565b600061170885856123bf565b905060408111806117195750855184115b1561172b575060009150819050610df3565b85850160200161173d81600084611811565b92506001820160011c6020036000518160031b1c9450505050935093915050565b60008061179b8485875161177291906123bf565b8791907f2e00000000000000000000000000000000000000000000000000000000000000611117565b90506000838210156117c3576117bc866117b68460016123d2565b8661175e565b90506117c7565b8391505b806117de866117d681866123bf565b89919061143d565b60408051602081019390935282015260600160405160208183030381529060405280519060200120925050509392505050565b60006118cb565b811a6000602f8211603a8310161561185357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd08101610c6b565b6047821060408311161561188a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc98101610c6b565b606782106060831116156118c157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa98101610c6b565b5061010092915050565b50600183820182821615611907576118e560008651611818565b80855360018601955060018501945060ff81111561190557600092508195505b505b8085101561195557845161191c600182611818565b611927600083611818565b60041b17905060ff811115611940576000925050611955565b80855350600285019450600184019350611907565b509392505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461198b57600080fd5b50565b6000602082840312156119a057600080fd5b8135610cac8161195d565b60005b838110156119c65781810151838201526020016119ae565b50506000910152565b600081518084526119e78160208601602086016119ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cac60208301846119cf565b60008083601f840112611a3e57600080fd5b50813567ffffffffffffffff811115611a5657600080fd5b602083019150836020828501011115611a6e57600080fd5b9250929050565b60008060008060408587031215611a8b57600080fd5b843567ffffffffffffffff811115611aa257600080fd5b611aae87828801611a2c565b909550935050602085013567ffffffffffffffff811115611ace57600080fd5b611ada87828801611a2c565b95989497509550505050565b600181811c90821680611afa57607f821691505b602082108103611b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b8b57611b8b611b39565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611bd857611bd8611b39565b604052919050565b600067ffffffffffffffff821115611bfa57611bfa611b39565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611c3757600080fd5b8135611c4a611c4582611be0565b611b91565b818152846020838601011115611c5f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611c9157600080fd5b833567ffffffffffffffff811115611ca857600080fd5b611cb486828701611c26565b935050602084013567ffffffffffffffff811115611cd157600080fd5b611cdd86828701611c26565b9250506040840135611cee8161195d565b809150509250925092565b6000611d07611c4584611be0565b9050828152838383011115611d1b57600080fd5b610cac8360208301846119ab565b600082601f830112611d3a57600080fd5b610cac83835160208501611cf9565b73ffffffffffffffffffffffffffffffffffffffff8116811461198b57600080fd5b60008060408385031215611d7e57600080fd5b825167ffffffffffffffff811115611d9557600080fd5b611da185828601611d29565b9250506020830151611db281611d49565b809150509250929050565b604081526000611dd060408301856119cf565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b604081528260408201528284606083013760006060848301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201606083820301602084015261160a60608201856119cf565b600067ffffffffffffffff821115611e6b57611e6b611b39565b5060051b60200190565b600060208284031215611e8757600080fd5b813567ffffffffffffffff811115611e9e57600080fd5b8201601f81018413611eaf57600080fd5b8035611ebd611c4582611e51565b8082825260208201915060208360051b850101925086831115611edf57600080fd5b602084015b83811015611fb057803567ffffffffffffffff811115611f0357600080fd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215611f3757600080fd5b611f3f611b68565b602082013567ffffffffffffffff811115611f5957600080fd5b611f688b602083860101611c26565b825250604082013567ffffffffffffffff811115611f8557600080fd5b611f948b602083860101611c26565b6020830152508085525050602083019250602081019050611ee4565b509695505050505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612059577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261202760408801826119cf565b905060208201519150868103602088015261204281836119cf565b965050506020938401939190910190600101611fe3565b50929695505050505050565b6000806040838503121561207857600080fd5b825167ffffffffffffffff81111561208f57600080fd5b61209b85828601611d29565b925050602083015163ffffffff81168114611db257600080fd5b6000602082840312156120c757600080fd5b81518015158114610cac57600080fd5b6060815260006120ea60608301866119cf565b82810360208401526120fc81866119cf565b9050828103604084015261160a81856119cf565b60408152600061212360408301856119cf565b82810360208401526110eb81856119cf565b600082516121478184602087016119ab565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60408152600061219360408301856119cf565b905061ffff831660208301529392505050565b6060815260006121b960608301866119cf565b82810360208401526121cb81866119cf565b9150507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b600060a0820173ffffffffffffffffffffffffffffffffffffffff8816835260a0602084015280875180835260c08501915060c08160051b86010192506020890160005b82811015612291577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4087860301845261227c8583516119cf565b94506020938401939190910190600101612242565b5050505082810360408401526122a781876119cf565b7fffffffff0000000000000000000000000000000000000000000000000000000086166060850152905082810360808401526122e381856119cf565b98975050505050505050565b60006020828403121561230157600080fd5b815167ffffffffffffffff81111561231857600080fd5b61029284828501611d29565b805160208201517fffffffff00000000000000000000000000000000000000000000000000000000811691906004821015612389577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610c6b57610c6b612390565b80820180821115610c6b57610c6b612390565b80516123f08161195d565b919050565b600080600080600060a0868803121561240d57600080fd5b855161241881611d49565b602087015190955067ffffffffffffffff81111561243557600080fd5b8601601f8101881361244657600080fd5b8051612454611c4582611e51565b8082825260208201915060208360051b85010192508a83111561247657600080fd5b602084015b838110156124cc57805167ffffffffffffffff81111561249a57600080fd5b8501603f81018d136124ab57600080fd5b6124bd8d602083015160408401611cf9565b8452506020928301920161247b565b5080975050505050604086015167ffffffffffffffff8111156124ee57600080fd5b6124fa88828901611d29565b935050612509606087016123e5565b9150608086015167ffffffffffffffff81111561252557600080fd5b61253188828901611d29565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561257f57600080fd5b8151610cac81611d4956fea2646970667358221220c529fe215df47216723b9379ddd69e523cb30e52b8b0cc1a19a63bdbad882df464736f6c634300081a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80637dc0d1d0116100505780637dc0d1d0146101425780639061b92314610169578063b4a858011461017c57600080fd5b806301ffc9a7146100775780633f15457f146100e1578063525399681461012d575b600080fd5b6100cc61008536600461198e565b7fffffffff00000000000000000000000000000000000000000000000000000000167f9061b923000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6101087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d8565b61013561018f565b6040516100d89190611a19565b6101087f000000000000000000000000000000000000000000000000000000000000000081565b610135610177366004611a75565b61021d565b61013561018a366004611a75565b61029a565b6000805461019c90611ae6565b80601f01602080910402602001604051908101604052809291908181526020018280546101c890611ae6565b80156102155780601f106101ea57610100808354040283529160200191610215565b820191906000526020600020905b8154815290600101906020018083116101f857829003601f168201915b505050505081565b606061029285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061090392505050565b949350505050565b6060600080806102ac85870187611c7c565b919450925090507fffffffff000000000000000000000000000000000000000000000000000000008116156103dd57600080838060200190518101906102f29190611d6b565b915091506103d1818686868e8e8830604051602001610312929190611dbd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261034f939291602401611df5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610afe565b95505050505050610292565b60006103eb888a018a611e75565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef836040518263ffffffff1660e01b81526004016104489190611fbb565b600060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190612065565b50905060006104ba8282610c0a565b90505b805151602082015110156108ce5760006104df82600001518360200151610c71565b90506104eb8188610c8c565b15806105005750606082015161ffff16600114155b806105145750604082015161ffff16601014155b1561051f57506108c0565b60008061053984600001518560a001518660c00151610cb3565b909250905073ffffffffffffffffffffffffffffffffffffffff8216156108bc576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f8ef98a7e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8316906301ffc9a790602401602060405180830381865afa1580156105e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060891906120b5565b156106b3576106a3828a8a8c8c86604051602401610628939291906120d7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8ef98a7e00000000000000000000000000000000000000000000000000000000179052610afe565b9950505050505050505050610292565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f9061b92300000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8316906301ffc9a790602401602060405180830381865afa15801561073d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076191906120b5565b156107fa576106a3828a8a8c8c60405160240161077f929190612110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b92300000000000000000000000000000000000000000000000000000000179052610afe565b6000808373ffffffffffffffffffffffffffffffffffffffff168a6040516108229190612135565b600060405180830381855afa9150503d806000811461085d576040519150601f19603f3d011682016040523d82523d6000602084013e610862565b606091505b5091509150811561087f579a506102929950505050505050505050565b8a6040517f29a76c060000000000000000000000000000000000000000000000000000000081526004016108b39190611a19565b60405180910390fd5b5050505b6108c981610dfb565b6104bd565b50846040517f29a76c060000000000000000000000000000000000000000000000000000000081526004016108b39190611a19565b604080516001808252818301909252600091816020015b606081526020019060019003908161091a5790505090506000805461093e90611ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90611ae6565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050816000815181106109cf576109cf612151565b602002602001018190525030818460106040516024016109f0929190612180565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f31b137b90000000000000000000000000000000000000000000000000000000017905290517fb4a858010000000000000000000000000000000000000000000000000000000091610a9c9189918991600091016121a6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f556f18300000000000000000000000000000000000000000000000000000000082526108b395949392916004016121fe565b606073ffffffffffffffffffffffffffffffffffffffff85163b610b2657610b268484610903565b6000610b328684610ee3565b90503d8115610b68576000610b48600083610ef0565b905080806020019051810190610b5e91906122ef565b9350505050610292565b60048110610bf8576000610b7e60006004610ef0565b90507f556f183000000000000000000000000000000000000000000000000000000000610baa82612324565b7fffffffff000000000000000000000000000000000000000000000000000000001603610bf6576000610be76004610be281866123bf565b610ef0565b9050610bf4818a8a610f45565b505b505b610c00610ff0565b5050949350505050565b610c586040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610c6b81610dfb565b92915050565b60606000610c7f8484610ffa565b9050610292848483611054565b600081518351148015610cac575081805190602001208380519060200120145b9392505050565b600060606000610cc48686866110aa565b9050600581511080610d1957506040805180820190915260058082527f454e5331200000000000000000000000000000000000000000000000000000006020830152610d179183916000919082906110f4565b155b15610d37575050604080516020810190915260008082529150610df3565b6000610d746005808451610d4b91906123bf565b8491907f2000000000000000000000000000000000000000000000000000000000000000611117565b90508151811115610dab576000610d8e83600585516111cf565b6040805160208101909152600081529095509350610df392505050565b6000610db9836005846111cf565b905080610deb610dca8460016123d2565b6001858751610dd991906123bf565b610de391906123bf565b869190611054565b945094505050505b935093915050565b60c08101516020820181905281515111610e125750565b6000610e2682600001518360200151610ffa565b8260200151610e3591906123d2565b8251909150610e4490826112d9565b61ffff166040830152610e586002826123d2565b8251909150610e6790826112d9565b61ffff166060830152610e7b6002826123d2565b8251909150610e8a90826112fb565b63ffffffff166080830152610ea06004826123d2565b8251909150600090610eb290836112d9565b61ffff169050610ec36002836123d2565b60a084018190529150610ed681836123d2565b60c0909301929092525050565b6000610cac83835a611318565b60608167ffffffffffffffff811115610f0b57610f0b611b39565b6040519080825280601f01601f191660200182016040528015610f35576020820181803683370190505b5090508183602083013e92915050565b600080600080600087806020019051810190610f6191906123f5565b945094509450945094508673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30848463b4a8580160e01b898587604051602001610a9c939291906121a6565b3d6000803e3d6000fd5b6000815b8351811061100e5761100e61253e565b600061101a85836113d2565b60ff16905061102a8160016123d2565b61103490836123d2565b915080600003611044575061104a565b50610ffe565b61029283826123bf565b60608167ffffffffffffffff81111561106f5761106f611b39565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050610cac848483600086611405565b606060006110b885856113d2565b60ff169050826110c882866123d2565b106110d5576110d561253e565b6110eb6110e38560016123d2565b869083611054565b95945050505050565b600061110184848461143d565b61110c87878561143d565b149695505050505050565b60008061112484866123d2565b90505b808510156111a457827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191686868151811061116457611164612151565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016036111995784915050610292565b600190940193611127565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95945050505050565b60008383815181106111e3576111e3612151565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f300000000000000000000000000000000000000000000000000000000000000014801561129b5750836112408460016123d2565b8151811061125057611250612151565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7800000000000000000000000000000000000000000000000000000000000000145b156112ce576000806112b96112b18660026123d2565b879086611457565b9150915080156112cb57509050610cac565b50505b610292848484611490565b60006112ef836112ea8460026123d2565b611614565b50016020015160f01c90565b600061130c836112ea8460046123d2565b50016020015160e01c90565b600073ffffffffffffffffffffffffffffffffffffffff84163b6113be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c207460448201527f6f206e6f6e2d636f6e747261637400000000000000000000000000000000000060648201526084016108b3565b6000808451602086018786fa949350505050565b60006113e3836112ea8460016123d2565b8282815181106113f5576113f5612151565b016020015160f81c905092915050565b611413856112ea83876123d2565b611421836112ea83856123d2565b61143682602085010185602088010183611660565b5050505050565b600061144d846112ea84866123d2565b5091016020012090565b600080826114668560286123d2565b1461147657506000905080610df3565b60006114838686866116e6565b9097909650945050505050565b60008061149e85858561175e565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630178b8bf90602401602060405180830381865afa15801561152f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611553919061256d565b905073ffffffffffffffffffffffffffffffffffffffff811661157b57600092505050610cac565b6040517f3b3b57de0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff821690633b3b57de90602401602060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a919061256d565b9695505050505050565b815181111561165c5781516040517f8a3c1cfb0000000000000000000000000000000000000000000000000000000081526108b3918391600401918252602082015260400190565b5050565b5b601f81111561169f5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001611661565b80156116e157815183516001602084900360031b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161783525b505050565b600080838310156116fc57506000905080610df3565b600061170885856123bf565b905060408111806117195750855184115b1561172b575060009150819050610df3565b85850160200161173d81600084611811565b92506001820160011c6020036000518160031b1c9450505050935093915050565b60008061179b8485875161177291906123bf565b8791907f2e00000000000000000000000000000000000000000000000000000000000000611117565b90506000838210156117c3576117bc866117b68460016123d2565b8661175e565b90506117c7565b8391505b806117de866117d681866123bf565b89919061143d565b60408051602081019390935282015260600160405160208183030381529060405280519060200120925050509392505050565b60006118cb565b811a6000602f8211603a8310161561185357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd08101610c6b565b6047821060408311161561188a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc98101610c6b565b606782106060831116156118c157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa98101610c6b565b5061010092915050565b50600183820182821615611907576118e560008651611818565b80855360018601955060018501945060ff81111561190557600092508195505b505b8085101561195557845161191c600182611818565b611927600083611818565b60041b17905060ff811115611940576000925050611955565b80855350600285019450600184019350611907565b509392505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461198b57600080fd5b50565b6000602082840312156119a057600080fd5b8135610cac8161195d565b60005b838110156119c65781810151838201526020016119ae565b50506000910152565b600081518084526119e78160208601602086016119ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cac60208301846119cf565b60008083601f840112611a3e57600080fd5b50813567ffffffffffffffff811115611a5657600080fd5b602083019150836020828501011115611a6e57600080fd5b9250929050565b60008060008060408587031215611a8b57600080fd5b843567ffffffffffffffff811115611aa257600080fd5b611aae87828801611a2c565b909550935050602085013567ffffffffffffffff811115611ace57600080fd5b611ada87828801611a2c565b95989497509550505050565b600181811c90821680611afa57607f821691505b602082108103611b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b8b57611b8b611b39565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611bd857611bd8611b39565b604052919050565b600067ffffffffffffffff821115611bfa57611bfa611b39565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611c3757600080fd5b8135611c4a611c4582611be0565b611b91565b818152846020838601011115611c5f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611c9157600080fd5b833567ffffffffffffffff811115611ca857600080fd5b611cb486828701611c26565b935050602084013567ffffffffffffffff811115611cd157600080fd5b611cdd86828701611c26565b9250506040840135611cee8161195d565b809150509250925092565b6000611d07611c4584611be0565b9050828152838383011115611d1b57600080fd5b610cac8360208301846119ab565b600082601f830112611d3a57600080fd5b610cac83835160208501611cf9565b73ffffffffffffffffffffffffffffffffffffffff8116811461198b57600080fd5b60008060408385031215611d7e57600080fd5b825167ffffffffffffffff811115611d9557600080fd5b611da185828601611d29565b9250506020830151611db281611d49565b809150509250929050565b604081526000611dd060408301856119cf565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b604081528260408201528284606083013760006060848301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201606083820301602084015261160a60608201856119cf565b600067ffffffffffffffff821115611e6b57611e6b611b39565b5060051b60200190565b600060208284031215611e8757600080fd5b813567ffffffffffffffff811115611e9e57600080fd5b8201601f81018413611eaf57600080fd5b8035611ebd611c4582611e51565b8082825260208201915060208360051b850101925086831115611edf57600080fd5b602084015b83811015611fb057803567ffffffffffffffff811115611f0357600080fd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215611f3757600080fd5b611f3f611b68565b602082013567ffffffffffffffff811115611f5957600080fd5b611f688b602083860101611c26565b825250604082013567ffffffffffffffff811115611f8557600080fd5b611f948b602083860101611c26565b6020830152508085525050602083019250602081019050611ee4565b509695505050505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612059577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261202760408801826119cf565b905060208201519150868103602088015261204281836119cf565b965050506020938401939190910190600101611fe3565b50929695505050505050565b6000806040838503121561207857600080fd5b825167ffffffffffffffff81111561208f57600080fd5b61209b85828601611d29565b925050602083015163ffffffff81168114611db257600080fd5b6000602082840312156120c757600080fd5b81518015158114610cac57600080fd5b6060815260006120ea60608301866119cf565b82810360208401526120fc81866119cf565b9050828103604084015261160a81856119cf565b60408152600061212360408301856119cf565b82810360208401526110eb81856119cf565b600082516121478184602087016119ab565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60408152600061219360408301856119cf565b905061ffff831660208301529392505050565b6060815260006121b960608301866119cf565b82810360208401526121cb81866119cf565b9150507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b600060a0820173ffffffffffffffffffffffffffffffffffffffff8816835260a0602084015280875180835260c08501915060c08160051b86010192506020890160005b82811015612291577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4087860301845261227c8583516119cf565b94506020938401939190910190600101612242565b5050505082810360408401526122a781876119cf565b7fffffffff0000000000000000000000000000000000000000000000000000000086166060850152905082810360808401526122e381856119cf565b98975050505050505050565b60006020828403121561230157600080fd5b815167ffffffffffffffff81111561231857600080fd5b61029284828501611d29565b805160208201517fffffffff00000000000000000000000000000000000000000000000000000000811691906004821015612389577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610c6b57610c6b612390565b80820180821115610c6b57610c6b612390565b80516123f08161195d565b919050565b600080600080600060a0868803121561240d57600080fd5b855161241881611d49565b602087015190955067ffffffffffffffff81111561243557600080fd5b8601601f8101881361244657600080fd5b8051612454611c4582611e51565b8082825260208201915060208360051b85010192508a83111561247657600080fd5b602084015b838110156124cc57805167ffffffffffffffff81111561249a57600080fd5b8501603f81018d136124ab57600080fd5b6124bd8d602083015160408401611cf9565b8452506020928301920161247b565b5080975050505050604086015167ffffffffffffffff8111156124ee57600080fd5b6124fa88828901611d29565b935050612509606087016123e5565b9150608086015167ffffffffffffffff81111561252557600080fd5b61253188828901611d29565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561257f57600080fd5b8151610cac81611d4956fea2646970667358221220c529fe215df47216723b9379ddd69e523cb30e52b8b0cc1a19a63bdbad882df464736f6c634300081a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {
    "13600": [
      {
        "length": 32,
        "start": 230
      },
      {
        "length": 32,
        "start": 5352
      }
    ],
    "13603": [
      {
        "length": 32,
        "start": 327
      },
      {
        "length": 32,
        "start": 1009
      }
    ]
  },
  "inputSourceName": "project/contracts/dnsregistrar/OffchainDNSResolver.sol",
  "buildInfoId": "solc-0_8_26-f05bdccb11f2cf6df865fc6a27a95b5ace6017ea"
}