github.com/status-im/status-go@v1.1.0/contracts/resolver/resolver.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package resolver
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // ABIResolverABI is the input ABI used to generate the binding from.
    30  const ABIResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"}]"
    31  
    32  // ABIResolverFuncSigs maps the 4-byte function signature to its string representation.
    33  var ABIResolverFuncSigs = map[string]string{
    34  	"2203ab56": "ABI(bytes32,uint256)",
    35  	"623195b0": "setABI(bytes32,uint256,bytes)",
    36  	"01ffc9a7": "supportsInterface(bytes4)",
    37  }
    38  
    39  // ABIResolver is an auto generated Go binding around an Ethereum contract.
    40  type ABIResolver struct {
    41  	ABIResolverCaller     // Read-only binding to the contract
    42  	ABIResolverTransactor // Write-only binding to the contract
    43  	ABIResolverFilterer   // Log filterer for contract events
    44  }
    45  
    46  // ABIResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
    47  type ABIResolverCaller struct {
    48  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    49  }
    50  
    51  // ABIResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
    52  type ABIResolverTransactor struct {
    53  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    54  }
    55  
    56  // ABIResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    57  type ABIResolverFilterer struct {
    58  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    59  }
    60  
    61  // ABIResolverSession is an auto generated Go binding around an Ethereum contract,
    62  // with pre-set call and transact options.
    63  type ABIResolverSession struct {
    64  	Contract     *ABIResolver      // Generic contract binding to set the session for
    65  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    66  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    67  }
    68  
    69  // ABIResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    70  // with pre-set call options.
    71  type ABIResolverCallerSession struct {
    72  	Contract *ABIResolverCaller // Generic contract caller binding to set the session for
    73  	CallOpts bind.CallOpts      // Call options to use throughout this session
    74  }
    75  
    76  // ABIResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    77  // with pre-set transact options.
    78  type ABIResolverTransactorSession struct {
    79  	Contract     *ABIResolverTransactor // Generic contract transactor binding to set the session for
    80  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
    81  }
    82  
    83  // ABIResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
    84  type ABIResolverRaw struct {
    85  	Contract *ABIResolver // Generic contract binding to access the raw methods on
    86  }
    87  
    88  // ABIResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    89  type ABIResolverCallerRaw struct {
    90  	Contract *ABIResolverCaller // Generic read-only contract binding to access the raw methods on
    91  }
    92  
    93  // ABIResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    94  type ABIResolverTransactorRaw struct {
    95  	Contract *ABIResolverTransactor // Generic write-only contract binding to access the raw methods on
    96  }
    97  
    98  // NewABIResolver creates a new instance of ABIResolver, bound to a specific deployed contract.
    99  func NewABIResolver(address common.Address, backend bind.ContractBackend) (*ABIResolver, error) {
   100  	contract, err := bindABIResolver(address, backend, backend, backend)
   101  	if err != nil {
   102  		return nil, err
   103  	}
   104  	return &ABIResolver{ABIResolverCaller: ABIResolverCaller{contract: contract}, ABIResolverTransactor: ABIResolverTransactor{contract: contract}, ABIResolverFilterer: ABIResolverFilterer{contract: contract}}, nil
   105  }
   106  
   107  // NewABIResolverCaller creates a new read-only instance of ABIResolver, bound to a specific deployed contract.
   108  func NewABIResolverCaller(address common.Address, caller bind.ContractCaller) (*ABIResolverCaller, error) {
   109  	contract, err := bindABIResolver(address, caller, nil, nil)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	return &ABIResolverCaller{contract: contract}, nil
   114  }
   115  
   116  // NewABIResolverTransactor creates a new write-only instance of ABIResolver, bound to a specific deployed contract.
   117  func NewABIResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*ABIResolverTransactor, error) {
   118  	contract, err := bindABIResolver(address, nil, transactor, nil)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	return &ABIResolverTransactor{contract: contract}, nil
   123  }
   124  
   125  // NewABIResolverFilterer creates a new log filterer instance of ABIResolver, bound to a specific deployed contract.
   126  func NewABIResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*ABIResolverFilterer, error) {
   127  	contract, err := bindABIResolver(address, nil, nil, filterer)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return &ABIResolverFilterer{contract: contract}, nil
   132  }
   133  
   134  // bindABIResolver binds a generic wrapper to an already deployed contract.
   135  func bindABIResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   136  	parsed, err := abi.JSON(strings.NewReader(ABIResolverABI))
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   141  }
   142  
   143  // Call invokes the (constant) contract method with params as input values and
   144  // sets the output to result. The result type might be a single field for simple
   145  // returns, a slice of interfaces for anonymous returns and a struct for named
   146  // returns.
   147  func (_ABIResolver *ABIResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   148  	return _ABIResolver.Contract.ABIResolverCaller.contract.Call(opts, result, method, params...)
   149  }
   150  
   151  // Transfer initiates a plain transaction to move funds to the contract, calling
   152  // its default method if one is available.
   153  func (_ABIResolver *ABIResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   154  	return _ABIResolver.Contract.ABIResolverTransactor.contract.Transfer(opts)
   155  }
   156  
   157  // Transact invokes the (paid) contract method with params as input values.
   158  func (_ABIResolver *ABIResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   159  	return _ABIResolver.Contract.ABIResolverTransactor.contract.Transact(opts, method, params...)
   160  }
   161  
   162  // Call invokes the (constant) contract method with params as input values and
   163  // sets the output to result. The result type might be a single field for simple
   164  // returns, a slice of interfaces for anonymous returns and a struct for named
   165  // returns.
   166  func (_ABIResolver *ABIResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   167  	return _ABIResolver.Contract.contract.Call(opts, result, method, params...)
   168  }
   169  
   170  // Transfer initiates a plain transaction to move funds to the contract, calling
   171  // its default method if one is available.
   172  func (_ABIResolver *ABIResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   173  	return _ABIResolver.Contract.contract.Transfer(opts)
   174  }
   175  
   176  // Transact invokes the (paid) contract method with params as input values.
   177  func (_ABIResolver *ABIResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   178  	return _ABIResolver.Contract.contract.Transact(opts, method, params...)
   179  }
   180  
   181  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   182  //
   183  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
   184  func (_ABIResolver *ABIResolverCaller) ABI(opts *bind.CallOpts, node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   185  	var out []interface{}
   186  	err := _ABIResolver.contract.Call(opts, &out, "ABI", node, contentTypes)
   187  
   188  	if err != nil {
   189  		return *new(*big.Int), *new([]byte), err
   190  	}
   191  
   192  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   193  	out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte)
   194  
   195  	return out0, out1, err
   196  
   197  }
   198  
   199  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   200  //
   201  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
   202  func (_ABIResolver *ABIResolverSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   203  	return _ABIResolver.Contract.ABI(&_ABIResolver.CallOpts, node, contentTypes)
   204  }
   205  
   206  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   207  //
   208  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
   209  func (_ABIResolver *ABIResolverCallerSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   210  	return _ABIResolver.Contract.ABI(&_ABIResolver.CallOpts, node, contentTypes)
   211  }
   212  
   213  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   214  //
   215  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   216  func (_ABIResolver *ABIResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   217  	var out []interface{}
   218  	err := _ABIResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
   219  
   220  	if err != nil {
   221  		return *new(bool), err
   222  	}
   223  
   224  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   225  
   226  	return out0, err
   227  
   228  }
   229  
   230  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   231  //
   232  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   233  func (_ABIResolver *ABIResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   234  	return _ABIResolver.Contract.SupportsInterface(&_ABIResolver.CallOpts, interfaceID)
   235  }
   236  
   237  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   238  //
   239  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   240  func (_ABIResolver *ABIResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   241  	return _ABIResolver.Contract.SupportsInterface(&_ABIResolver.CallOpts, interfaceID)
   242  }
   243  
   244  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   245  //
   246  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   247  func (_ABIResolver *ABIResolverTransactor) SetABI(opts *bind.TransactOpts, node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   248  	return _ABIResolver.contract.Transact(opts, "setABI", node, contentType, data)
   249  }
   250  
   251  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   252  //
   253  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   254  func (_ABIResolver *ABIResolverSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   255  	return _ABIResolver.Contract.SetABI(&_ABIResolver.TransactOpts, node, contentType, data)
   256  }
   257  
   258  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   259  //
   260  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   261  func (_ABIResolver *ABIResolverTransactorSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   262  	return _ABIResolver.Contract.SetABI(&_ABIResolver.TransactOpts, node, contentType, data)
   263  }
   264  
   265  // ABIResolverABIChangedIterator is returned from FilterABIChanged and is used to iterate over the raw logs and unpacked data for ABIChanged events raised by the ABIResolver contract.
   266  type ABIResolverABIChangedIterator struct {
   267  	Event *ABIResolverABIChanged // Event containing the contract specifics and raw log
   268  
   269  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   270  	event    string              // Event name to use for unpacking event data
   271  
   272  	logs chan types.Log        // Log channel receiving the found contract events
   273  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   274  	done bool                  // Whether the subscription completed delivering logs
   275  	fail error                 // Occurred error to stop iteration
   276  }
   277  
   278  // Next advances the iterator to the subsequent event, returning whether there
   279  // are any more events found. In case of a retrieval or parsing error, false is
   280  // returned and Error() can be queried for the exact failure.
   281  func (it *ABIResolverABIChangedIterator) Next() bool {
   282  	// If the iterator failed, stop iterating
   283  	if it.fail != nil {
   284  		return false
   285  	}
   286  	// If the iterator completed, deliver directly whatever's available
   287  	if it.done {
   288  		select {
   289  		case log := <-it.logs:
   290  			it.Event = new(ABIResolverABIChanged)
   291  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   292  				it.fail = err
   293  				return false
   294  			}
   295  			it.Event.Raw = log
   296  			return true
   297  
   298  		default:
   299  			return false
   300  		}
   301  	}
   302  	// Iterator still in progress, wait for either a data or an error event
   303  	select {
   304  	case log := <-it.logs:
   305  		it.Event = new(ABIResolverABIChanged)
   306  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   307  			it.fail = err
   308  			return false
   309  		}
   310  		it.Event.Raw = log
   311  		return true
   312  
   313  	case err := <-it.sub.Err():
   314  		it.done = true
   315  		it.fail = err
   316  		return it.Next()
   317  	}
   318  }
   319  
   320  // Error returns any retrieval or parsing error occurred during filtering.
   321  func (it *ABIResolverABIChangedIterator) Error() error {
   322  	return it.fail
   323  }
   324  
   325  // Close terminates the iteration process, releasing any pending underlying
   326  // resources.
   327  func (it *ABIResolverABIChangedIterator) Close() error {
   328  	it.sub.Unsubscribe()
   329  	return nil
   330  }
   331  
   332  // ABIResolverABIChanged represents a ABIChanged event raised by the ABIResolver contract.
   333  type ABIResolverABIChanged struct {
   334  	Node        [32]byte
   335  	ContentType *big.Int
   336  	Raw         types.Log // Blockchain specific contextual infos
   337  }
   338  
   339  // FilterABIChanged is a free log retrieval operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   340  //
   341  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
   342  func (_ABIResolver *ABIResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node [][32]byte, contentType []*big.Int) (*ABIResolverABIChangedIterator, error) {
   343  
   344  	var nodeRule []interface{}
   345  	for _, nodeItem := range node {
   346  		nodeRule = append(nodeRule, nodeItem)
   347  	}
   348  	var contentTypeRule []interface{}
   349  	for _, contentTypeItem := range contentType {
   350  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   351  	}
   352  
   353  	logs, sub, err := _ABIResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   354  	if err != nil {
   355  		return nil, err
   356  	}
   357  	return &ABIResolverABIChangedIterator{contract: _ABIResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
   358  }
   359  
   360  // WatchABIChanged is a free log subscription operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   361  //
   362  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
   363  func (_ABIResolver *ABIResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *ABIResolverABIChanged, node [][32]byte, contentType []*big.Int) (event.Subscription, error) {
   364  
   365  	var nodeRule []interface{}
   366  	for _, nodeItem := range node {
   367  		nodeRule = append(nodeRule, nodeItem)
   368  	}
   369  	var contentTypeRule []interface{}
   370  	for _, contentTypeItem := range contentType {
   371  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   372  	}
   373  
   374  	logs, sub, err := _ABIResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   375  	if err != nil {
   376  		return nil, err
   377  	}
   378  	return event.NewSubscription(func(quit <-chan struct{}) error {
   379  		defer sub.Unsubscribe()
   380  		for {
   381  			select {
   382  			case log := <-logs:
   383  				// New log arrived, parse the event and forward to the user
   384  				event := new(ABIResolverABIChanged)
   385  				if err := _ABIResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   386  					return err
   387  				}
   388  				event.Raw = log
   389  
   390  				select {
   391  				case sink <- event:
   392  				case err := <-sub.Err():
   393  					return err
   394  				case <-quit:
   395  					return nil
   396  				}
   397  			case err := <-sub.Err():
   398  				return err
   399  			case <-quit:
   400  				return nil
   401  			}
   402  		}
   403  	}), nil
   404  }
   405  
   406  // ParseABIChanged is a log parse operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   407  //
   408  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
   409  func (_ABIResolver *ABIResolverFilterer) ParseABIChanged(log types.Log) (*ABIResolverABIChanged, error) {
   410  	event := new(ABIResolverABIChanged)
   411  	if err := _ABIResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   412  		return nil, err
   413  	}
   414  	event.Raw = log
   415  	return event, nil
   416  }
   417  
   418  // AddrResolverABI is the input ABI used to generate the binding from.
   419  const AddrResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"},{\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"}]"
   420  
   421  // AddrResolverFuncSigs maps the 4-byte function signature to its string representation.
   422  var AddrResolverFuncSigs = map[string]string{
   423  	"3b3b57de": "addr(bytes32)",
   424  	"f1cb7e06": "addr(bytes32,uint256)",
   425  	"d5fa2b00": "setAddr(bytes32,address)",
   426  	"8b95dd71": "setAddr(bytes32,uint256,bytes)",
   427  	"01ffc9a7": "supportsInterface(bytes4)",
   428  }
   429  
   430  // AddrResolver is an auto generated Go binding around an Ethereum contract.
   431  type AddrResolver struct {
   432  	AddrResolverCaller     // Read-only binding to the contract
   433  	AddrResolverTransactor // Write-only binding to the contract
   434  	AddrResolverFilterer   // Log filterer for contract events
   435  }
   436  
   437  // AddrResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
   438  type AddrResolverCaller struct {
   439  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   440  }
   441  
   442  // AddrResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
   443  type AddrResolverTransactor struct {
   444  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   445  }
   446  
   447  // AddrResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   448  type AddrResolverFilterer struct {
   449  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   450  }
   451  
   452  // AddrResolverSession is an auto generated Go binding around an Ethereum contract,
   453  // with pre-set call and transact options.
   454  type AddrResolverSession struct {
   455  	Contract     *AddrResolver     // Generic contract binding to set the session for
   456  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   457  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   458  }
   459  
   460  // AddrResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   461  // with pre-set call options.
   462  type AddrResolverCallerSession struct {
   463  	Contract *AddrResolverCaller // Generic contract caller binding to set the session for
   464  	CallOpts bind.CallOpts       // Call options to use throughout this session
   465  }
   466  
   467  // AddrResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   468  // with pre-set transact options.
   469  type AddrResolverTransactorSession struct {
   470  	Contract     *AddrResolverTransactor // Generic contract transactor binding to set the session for
   471  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
   472  }
   473  
   474  // AddrResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
   475  type AddrResolverRaw struct {
   476  	Contract *AddrResolver // Generic contract binding to access the raw methods on
   477  }
   478  
   479  // AddrResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   480  type AddrResolverCallerRaw struct {
   481  	Contract *AddrResolverCaller // Generic read-only contract binding to access the raw methods on
   482  }
   483  
   484  // AddrResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   485  type AddrResolverTransactorRaw struct {
   486  	Contract *AddrResolverTransactor // Generic write-only contract binding to access the raw methods on
   487  }
   488  
   489  // NewAddrResolver creates a new instance of AddrResolver, bound to a specific deployed contract.
   490  func NewAddrResolver(address common.Address, backend bind.ContractBackend) (*AddrResolver, error) {
   491  	contract, err := bindAddrResolver(address, backend, backend, backend)
   492  	if err != nil {
   493  		return nil, err
   494  	}
   495  	return &AddrResolver{AddrResolverCaller: AddrResolverCaller{contract: contract}, AddrResolverTransactor: AddrResolverTransactor{contract: contract}, AddrResolverFilterer: AddrResolverFilterer{contract: contract}}, nil
   496  }
   497  
   498  // NewAddrResolverCaller creates a new read-only instance of AddrResolver, bound to a specific deployed contract.
   499  func NewAddrResolverCaller(address common.Address, caller bind.ContractCaller) (*AddrResolverCaller, error) {
   500  	contract, err := bindAddrResolver(address, caller, nil, nil)
   501  	if err != nil {
   502  		return nil, err
   503  	}
   504  	return &AddrResolverCaller{contract: contract}, nil
   505  }
   506  
   507  // NewAddrResolverTransactor creates a new write-only instance of AddrResolver, bound to a specific deployed contract.
   508  func NewAddrResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*AddrResolverTransactor, error) {
   509  	contract, err := bindAddrResolver(address, nil, transactor, nil)
   510  	if err != nil {
   511  		return nil, err
   512  	}
   513  	return &AddrResolverTransactor{contract: contract}, nil
   514  }
   515  
   516  // NewAddrResolverFilterer creates a new log filterer instance of AddrResolver, bound to a specific deployed contract.
   517  func NewAddrResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*AddrResolverFilterer, error) {
   518  	contract, err := bindAddrResolver(address, nil, nil, filterer)
   519  	if err != nil {
   520  		return nil, err
   521  	}
   522  	return &AddrResolverFilterer{contract: contract}, nil
   523  }
   524  
   525  // bindAddrResolver binds a generic wrapper to an already deployed contract.
   526  func bindAddrResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   527  	parsed, err := abi.JSON(strings.NewReader(AddrResolverABI))
   528  	if err != nil {
   529  		return nil, err
   530  	}
   531  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   532  }
   533  
   534  // Call invokes the (constant) contract method with params as input values and
   535  // sets the output to result. The result type might be a single field for simple
   536  // returns, a slice of interfaces for anonymous returns and a struct for named
   537  // returns.
   538  func (_AddrResolver *AddrResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   539  	return _AddrResolver.Contract.AddrResolverCaller.contract.Call(opts, result, method, params...)
   540  }
   541  
   542  // Transfer initiates a plain transaction to move funds to the contract, calling
   543  // its default method if one is available.
   544  func (_AddrResolver *AddrResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   545  	return _AddrResolver.Contract.AddrResolverTransactor.contract.Transfer(opts)
   546  }
   547  
   548  // Transact invokes the (paid) contract method with params as input values.
   549  func (_AddrResolver *AddrResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   550  	return _AddrResolver.Contract.AddrResolverTransactor.contract.Transact(opts, method, params...)
   551  }
   552  
   553  // Call invokes the (constant) contract method with params as input values and
   554  // sets the output to result. The result type might be a single field for simple
   555  // returns, a slice of interfaces for anonymous returns and a struct for named
   556  // returns.
   557  func (_AddrResolver *AddrResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   558  	return _AddrResolver.Contract.contract.Call(opts, result, method, params...)
   559  }
   560  
   561  // Transfer initiates a plain transaction to move funds to the contract, calling
   562  // its default method if one is available.
   563  func (_AddrResolver *AddrResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   564  	return _AddrResolver.Contract.contract.Transfer(opts)
   565  }
   566  
   567  // Transact invokes the (paid) contract method with params as input values.
   568  func (_AddrResolver *AddrResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   569  	return _AddrResolver.Contract.contract.Transact(opts, method, params...)
   570  }
   571  
   572  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   573  //
   574  // Solidity: function addr(bytes32 node) view returns(address)
   575  func (_AddrResolver *AddrResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   576  	var out []interface{}
   577  	err := _AddrResolver.contract.Call(opts, &out, "addr", node)
   578  
   579  	if err != nil {
   580  		return *new(common.Address), err
   581  	}
   582  
   583  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   584  
   585  	return out0, err
   586  
   587  }
   588  
   589  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   590  //
   591  // Solidity: function addr(bytes32 node) view returns(address)
   592  func (_AddrResolver *AddrResolverSession) Addr(node [32]byte) (common.Address, error) {
   593  	return _AddrResolver.Contract.Addr(&_AddrResolver.CallOpts, node)
   594  }
   595  
   596  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   597  //
   598  // Solidity: function addr(bytes32 node) view returns(address)
   599  func (_AddrResolver *AddrResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
   600  	return _AddrResolver.Contract.Addr(&_AddrResolver.CallOpts, node)
   601  }
   602  
   603  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
   604  //
   605  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
   606  func (_AddrResolver *AddrResolverCaller) Addr0(opts *bind.CallOpts, node [32]byte, coinType *big.Int) ([]byte, error) {
   607  	var out []interface{}
   608  	err := _AddrResolver.contract.Call(opts, &out, "addr0", node, coinType)
   609  
   610  	if err != nil {
   611  		return *new([]byte), err
   612  	}
   613  
   614  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
   615  
   616  	return out0, err
   617  
   618  }
   619  
   620  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
   621  //
   622  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
   623  func (_AddrResolver *AddrResolverSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
   624  	return _AddrResolver.Contract.Addr0(&_AddrResolver.CallOpts, node, coinType)
   625  }
   626  
   627  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
   628  //
   629  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
   630  func (_AddrResolver *AddrResolverCallerSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
   631  	return _AddrResolver.Contract.Addr0(&_AddrResolver.CallOpts, node, coinType)
   632  }
   633  
   634  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   635  //
   636  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   637  func (_AddrResolver *AddrResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   638  	var out []interface{}
   639  	err := _AddrResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
   640  
   641  	if err != nil {
   642  		return *new(bool), err
   643  	}
   644  
   645  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   646  
   647  	return out0, err
   648  
   649  }
   650  
   651  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   652  //
   653  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   654  func (_AddrResolver *AddrResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   655  	return _AddrResolver.Contract.SupportsInterface(&_AddrResolver.CallOpts, interfaceID)
   656  }
   657  
   658  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   659  //
   660  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
   661  func (_AddrResolver *AddrResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   662  	return _AddrResolver.Contract.SupportsInterface(&_AddrResolver.CallOpts, interfaceID)
   663  }
   664  
   665  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
   666  //
   667  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
   668  func (_AddrResolver *AddrResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
   669  	return _AddrResolver.contract.Transact(opts, "setAddr", node, coinType, a)
   670  }
   671  
   672  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
   673  //
   674  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
   675  func (_AddrResolver *AddrResolverSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
   676  	return _AddrResolver.Contract.SetAddr(&_AddrResolver.TransactOpts, node, coinType, a)
   677  }
   678  
   679  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
   680  //
   681  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
   682  func (_AddrResolver *AddrResolverTransactorSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
   683  	return _AddrResolver.Contract.SetAddr(&_AddrResolver.TransactOpts, node, coinType, a)
   684  }
   685  
   686  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
   687  //
   688  // Solidity: function setAddr(bytes32 node, address a) returns()
   689  func (_AddrResolver *AddrResolverTransactor) SetAddr0(opts *bind.TransactOpts, node [32]byte, a common.Address) (*types.Transaction, error) {
   690  	return _AddrResolver.contract.Transact(opts, "setAddr0", node, a)
   691  }
   692  
   693  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
   694  //
   695  // Solidity: function setAddr(bytes32 node, address a) returns()
   696  func (_AddrResolver *AddrResolverSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
   697  	return _AddrResolver.Contract.SetAddr0(&_AddrResolver.TransactOpts, node, a)
   698  }
   699  
   700  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
   701  //
   702  // Solidity: function setAddr(bytes32 node, address a) returns()
   703  func (_AddrResolver *AddrResolverTransactorSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
   704  	return _AddrResolver.Contract.SetAddr0(&_AddrResolver.TransactOpts, node, a)
   705  }
   706  
   707  // AddrResolverAddrChangedIterator is returned from FilterAddrChanged and is used to iterate over the raw logs and unpacked data for AddrChanged events raised by the AddrResolver contract.
   708  type AddrResolverAddrChangedIterator struct {
   709  	Event *AddrResolverAddrChanged // Event containing the contract specifics and raw log
   710  
   711  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   712  	event    string              // Event name to use for unpacking event data
   713  
   714  	logs chan types.Log        // Log channel receiving the found contract events
   715  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   716  	done bool                  // Whether the subscription completed delivering logs
   717  	fail error                 // Occurred error to stop iteration
   718  }
   719  
   720  // Next advances the iterator to the subsequent event, returning whether there
   721  // are any more events found. In case of a retrieval or parsing error, false is
   722  // returned and Error() can be queried for the exact failure.
   723  func (it *AddrResolverAddrChangedIterator) Next() bool {
   724  	// If the iterator failed, stop iterating
   725  	if it.fail != nil {
   726  		return false
   727  	}
   728  	// If the iterator completed, deliver directly whatever's available
   729  	if it.done {
   730  		select {
   731  		case log := <-it.logs:
   732  			it.Event = new(AddrResolverAddrChanged)
   733  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   734  				it.fail = err
   735  				return false
   736  			}
   737  			it.Event.Raw = log
   738  			return true
   739  
   740  		default:
   741  			return false
   742  		}
   743  	}
   744  	// Iterator still in progress, wait for either a data or an error event
   745  	select {
   746  	case log := <-it.logs:
   747  		it.Event = new(AddrResolverAddrChanged)
   748  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   749  			it.fail = err
   750  			return false
   751  		}
   752  		it.Event.Raw = log
   753  		return true
   754  
   755  	case err := <-it.sub.Err():
   756  		it.done = true
   757  		it.fail = err
   758  		return it.Next()
   759  	}
   760  }
   761  
   762  // Error returns any retrieval or parsing error occurred during filtering.
   763  func (it *AddrResolverAddrChangedIterator) Error() error {
   764  	return it.fail
   765  }
   766  
   767  // Close terminates the iteration process, releasing any pending underlying
   768  // resources.
   769  func (it *AddrResolverAddrChangedIterator) Close() error {
   770  	it.sub.Unsubscribe()
   771  	return nil
   772  }
   773  
   774  // AddrResolverAddrChanged represents a AddrChanged event raised by the AddrResolver contract.
   775  type AddrResolverAddrChanged struct {
   776  	Node [32]byte
   777  	A    common.Address
   778  	Raw  types.Log // Blockchain specific contextual infos
   779  }
   780  
   781  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   782  //
   783  // Solidity: event AddrChanged(bytes32 indexed node, address a)
   784  func (_AddrResolver *AddrResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*AddrResolverAddrChangedIterator, error) {
   785  
   786  	var nodeRule []interface{}
   787  	for _, nodeItem := range node {
   788  		nodeRule = append(nodeRule, nodeItem)
   789  	}
   790  
   791  	logs, sub, err := _AddrResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
   792  	if err != nil {
   793  		return nil, err
   794  	}
   795  	return &AddrResolverAddrChangedIterator{contract: _AddrResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
   796  }
   797  
   798  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   799  //
   800  // Solidity: event AddrChanged(bytes32 indexed node, address a)
   801  func (_AddrResolver *AddrResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *AddrResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
   802  
   803  	var nodeRule []interface{}
   804  	for _, nodeItem := range node {
   805  		nodeRule = append(nodeRule, nodeItem)
   806  	}
   807  
   808  	logs, sub, err := _AddrResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
   809  	if err != nil {
   810  		return nil, err
   811  	}
   812  	return event.NewSubscription(func(quit <-chan struct{}) error {
   813  		defer sub.Unsubscribe()
   814  		for {
   815  			select {
   816  			case log := <-logs:
   817  				// New log arrived, parse the event and forward to the user
   818  				event := new(AddrResolverAddrChanged)
   819  				if err := _AddrResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   820  					return err
   821  				}
   822  				event.Raw = log
   823  
   824  				select {
   825  				case sink <- event:
   826  				case err := <-sub.Err():
   827  					return err
   828  				case <-quit:
   829  					return nil
   830  				}
   831  			case err := <-sub.Err():
   832  				return err
   833  			case <-quit:
   834  				return nil
   835  			}
   836  		}
   837  	}), nil
   838  }
   839  
   840  // ParseAddrChanged is a log parse operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   841  //
   842  // Solidity: event AddrChanged(bytes32 indexed node, address a)
   843  func (_AddrResolver *AddrResolverFilterer) ParseAddrChanged(log types.Log) (*AddrResolverAddrChanged, error) {
   844  	event := new(AddrResolverAddrChanged)
   845  	if err := _AddrResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   846  		return nil, err
   847  	}
   848  	event.Raw = log
   849  	return event, nil
   850  }
   851  
   852  // AddrResolverAddressChangedIterator is returned from FilterAddressChanged and is used to iterate over the raw logs and unpacked data for AddressChanged events raised by the AddrResolver contract.
   853  type AddrResolverAddressChangedIterator struct {
   854  	Event *AddrResolverAddressChanged // Event containing the contract specifics and raw log
   855  
   856  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   857  	event    string              // Event name to use for unpacking event data
   858  
   859  	logs chan types.Log        // Log channel receiving the found contract events
   860  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   861  	done bool                  // Whether the subscription completed delivering logs
   862  	fail error                 // Occurred error to stop iteration
   863  }
   864  
   865  // Next advances the iterator to the subsequent event, returning whether there
   866  // are any more events found. In case of a retrieval or parsing error, false is
   867  // returned and Error() can be queried for the exact failure.
   868  func (it *AddrResolverAddressChangedIterator) Next() bool {
   869  	// If the iterator failed, stop iterating
   870  	if it.fail != nil {
   871  		return false
   872  	}
   873  	// If the iterator completed, deliver directly whatever's available
   874  	if it.done {
   875  		select {
   876  		case log := <-it.logs:
   877  			it.Event = new(AddrResolverAddressChanged)
   878  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   879  				it.fail = err
   880  				return false
   881  			}
   882  			it.Event.Raw = log
   883  			return true
   884  
   885  		default:
   886  			return false
   887  		}
   888  	}
   889  	// Iterator still in progress, wait for either a data or an error event
   890  	select {
   891  	case log := <-it.logs:
   892  		it.Event = new(AddrResolverAddressChanged)
   893  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   894  			it.fail = err
   895  			return false
   896  		}
   897  		it.Event.Raw = log
   898  		return true
   899  
   900  	case err := <-it.sub.Err():
   901  		it.done = true
   902  		it.fail = err
   903  		return it.Next()
   904  	}
   905  }
   906  
   907  // Error returns any retrieval or parsing error occurred during filtering.
   908  func (it *AddrResolverAddressChangedIterator) Error() error {
   909  	return it.fail
   910  }
   911  
   912  // Close terminates the iteration process, releasing any pending underlying
   913  // resources.
   914  func (it *AddrResolverAddressChangedIterator) Close() error {
   915  	it.sub.Unsubscribe()
   916  	return nil
   917  }
   918  
   919  // AddrResolverAddressChanged represents a AddressChanged event raised by the AddrResolver contract.
   920  type AddrResolverAddressChanged struct {
   921  	Node       [32]byte
   922  	CoinType   *big.Int
   923  	NewAddress []byte
   924  	Raw        types.Log // Blockchain specific contextual infos
   925  }
   926  
   927  // FilterAddressChanged is a free log retrieval operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
   928  //
   929  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
   930  func (_AddrResolver *AddrResolverFilterer) FilterAddressChanged(opts *bind.FilterOpts, node [][32]byte) (*AddrResolverAddressChangedIterator, error) {
   931  
   932  	var nodeRule []interface{}
   933  	for _, nodeItem := range node {
   934  		nodeRule = append(nodeRule, nodeItem)
   935  	}
   936  
   937  	logs, sub, err := _AddrResolver.contract.FilterLogs(opts, "AddressChanged", nodeRule)
   938  	if err != nil {
   939  		return nil, err
   940  	}
   941  	return &AddrResolverAddressChangedIterator{contract: _AddrResolver.contract, event: "AddressChanged", logs: logs, sub: sub}, nil
   942  }
   943  
   944  // WatchAddressChanged is a free log subscription operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
   945  //
   946  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
   947  func (_AddrResolver *AddrResolverFilterer) WatchAddressChanged(opts *bind.WatchOpts, sink chan<- *AddrResolverAddressChanged, node [][32]byte) (event.Subscription, error) {
   948  
   949  	var nodeRule []interface{}
   950  	for _, nodeItem := range node {
   951  		nodeRule = append(nodeRule, nodeItem)
   952  	}
   953  
   954  	logs, sub, err := _AddrResolver.contract.WatchLogs(opts, "AddressChanged", nodeRule)
   955  	if err != nil {
   956  		return nil, err
   957  	}
   958  	return event.NewSubscription(func(quit <-chan struct{}) error {
   959  		defer sub.Unsubscribe()
   960  		for {
   961  			select {
   962  			case log := <-logs:
   963  				// New log arrived, parse the event and forward to the user
   964  				event := new(AddrResolverAddressChanged)
   965  				if err := _AddrResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
   966  					return err
   967  				}
   968  				event.Raw = log
   969  
   970  				select {
   971  				case sink <- event:
   972  				case err := <-sub.Err():
   973  					return err
   974  				case <-quit:
   975  					return nil
   976  				}
   977  			case err := <-sub.Err():
   978  				return err
   979  			case <-quit:
   980  				return nil
   981  			}
   982  		}
   983  	}), nil
   984  }
   985  
   986  // ParseAddressChanged is a log parse operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
   987  //
   988  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
   989  func (_AddrResolver *AddrResolverFilterer) ParseAddressChanged(log types.Log) (*AddrResolverAddressChanged, error) {
   990  	event := new(AddrResolverAddressChanged)
   991  	if err := _AddrResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
   992  		return nil, err
   993  	}
   994  	event.Raw = log
   995  	return event, nil
   996  }
   997  
   998  // ContentHashResolverABI is the input ABI used to generate the binding from.
   999  const ContentHashResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"}]"
  1000  
  1001  // ContentHashResolverFuncSigs maps the 4-byte function signature to its string representation.
  1002  var ContentHashResolverFuncSigs = map[string]string{
  1003  	"bc1c58d1": "contenthash(bytes32)",
  1004  	"304e6ade": "setContenthash(bytes32,bytes)",
  1005  	"01ffc9a7": "supportsInterface(bytes4)",
  1006  }
  1007  
  1008  // ContentHashResolver is an auto generated Go binding around an Ethereum contract.
  1009  type ContentHashResolver struct {
  1010  	ContentHashResolverCaller     // Read-only binding to the contract
  1011  	ContentHashResolverTransactor // Write-only binding to the contract
  1012  	ContentHashResolverFilterer   // Log filterer for contract events
  1013  }
  1014  
  1015  // ContentHashResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  1016  type ContentHashResolverCaller struct {
  1017  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1018  }
  1019  
  1020  // ContentHashResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1021  type ContentHashResolverTransactor struct {
  1022  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1023  }
  1024  
  1025  // ContentHashResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1026  type ContentHashResolverFilterer struct {
  1027  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1028  }
  1029  
  1030  // ContentHashResolverSession is an auto generated Go binding around an Ethereum contract,
  1031  // with pre-set call and transact options.
  1032  type ContentHashResolverSession struct {
  1033  	Contract     *ContentHashResolver // Generic contract binding to set the session for
  1034  	CallOpts     bind.CallOpts        // Call options to use throughout this session
  1035  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  1036  }
  1037  
  1038  // ContentHashResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1039  // with pre-set call options.
  1040  type ContentHashResolverCallerSession struct {
  1041  	Contract *ContentHashResolverCaller // Generic contract caller binding to set the session for
  1042  	CallOpts bind.CallOpts              // Call options to use throughout this session
  1043  }
  1044  
  1045  // ContentHashResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1046  // with pre-set transact options.
  1047  type ContentHashResolverTransactorSession struct {
  1048  	Contract     *ContentHashResolverTransactor // Generic contract transactor binding to set the session for
  1049  	TransactOpts bind.TransactOpts              // Transaction auth options to use throughout this session
  1050  }
  1051  
  1052  // ContentHashResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  1053  type ContentHashResolverRaw struct {
  1054  	Contract *ContentHashResolver // Generic contract binding to access the raw methods on
  1055  }
  1056  
  1057  // ContentHashResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1058  type ContentHashResolverCallerRaw struct {
  1059  	Contract *ContentHashResolverCaller // Generic read-only contract binding to access the raw methods on
  1060  }
  1061  
  1062  // ContentHashResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1063  type ContentHashResolverTransactorRaw struct {
  1064  	Contract *ContentHashResolverTransactor // Generic write-only contract binding to access the raw methods on
  1065  }
  1066  
  1067  // NewContentHashResolver creates a new instance of ContentHashResolver, bound to a specific deployed contract.
  1068  func NewContentHashResolver(address common.Address, backend bind.ContractBackend) (*ContentHashResolver, error) {
  1069  	contract, err := bindContentHashResolver(address, backend, backend, backend)
  1070  	if err != nil {
  1071  		return nil, err
  1072  	}
  1073  	return &ContentHashResolver{ContentHashResolverCaller: ContentHashResolverCaller{contract: contract}, ContentHashResolverTransactor: ContentHashResolverTransactor{contract: contract}, ContentHashResolverFilterer: ContentHashResolverFilterer{contract: contract}}, nil
  1074  }
  1075  
  1076  // NewContentHashResolverCaller creates a new read-only instance of ContentHashResolver, bound to a specific deployed contract.
  1077  func NewContentHashResolverCaller(address common.Address, caller bind.ContractCaller) (*ContentHashResolverCaller, error) {
  1078  	contract, err := bindContentHashResolver(address, caller, nil, nil)
  1079  	if err != nil {
  1080  		return nil, err
  1081  	}
  1082  	return &ContentHashResolverCaller{contract: contract}, nil
  1083  }
  1084  
  1085  // NewContentHashResolverTransactor creates a new write-only instance of ContentHashResolver, bound to a specific deployed contract.
  1086  func NewContentHashResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*ContentHashResolverTransactor, error) {
  1087  	contract, err := bindContentHashResolver(address, nil, transactor, nil)
  1088  	if err != nil {
  1089  		return nil, err
  1090  	}
  1091  	return &ContentHashResolverTransactor{contract: contract}, nil
  1092  }
  1093  
  1094  // NewContentHashResolverFilterer creates a new log filterer instance of ContentHashResolver, bound to a specific deployed contract.
  1095  func NewContentHashResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*ContentHashResolverFilterer, error) {
  1096  	contract, err := bindContentHashResolver(address, nil, nil, filterer)
  1097  	if err != nil {
  1098  		return nil, err
  1099  	}
  1100  	return &ContentHashResolverFilterer{contract: contract}, nil
  1101  }
  1102  
  1103  // bindContentHashResolver binds a generic wrapper to an already deployed contract.
  1104  func bindContentHashResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1105  	parsed, err := abi.JSON(strings.NewReader(ContentHashResolverABI))
  1106  	if err != nil {
  1107  		return nil, err
  1108  	}
  1109  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1110  }
  1111  
  1112  // Call invokes the (constant) contract method with params as input values and
  1113  // sets the output to result. The result type might be a single field for simple
  1114  // returns, a slice of interfaces for anonymous returns and a struct for named
  1115  // returns.
  1116  func (_ContentHashResolver *ContentHashResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1117  	return _ContentHashResolver.Contract.ContentHashResolverCaller.contract.Call(opts, result, method, params...)
  1118  }
  1119  
  1120  // Transfer initiates a plain transaction to move funds to the contract, calling
  1121  // its default method if one is available.
  1122  func (_ContentHashResolver *ContentHashResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1123  	return _ContentHashResolver.Contract.ContentHashResolverTransactor.contract.Transfer(opts)
  1124  }
  1125  
  1126  // Transact invokes the (paid) contract method with params as input values.
  1127  func (_ContentHashResolver *ContentHashResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1128  	return _ContentHashResolver.Contract.ContentHashResolverTransactor.contract.Transact(opts, method, params...)
  1129  }
  1130  
  1131  // Call invokes the (constant) contract method with params as input values and
  1132  // sets the output to result. The result type might be a single field for simple
  1133  // returns, a slice of interfaces for anonymous returns and a struct for named
  1134  // returns.
  1135  func (_ContentHashResolver *ContentHashResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1136  	return _ContentHashResolver.Contract.contract.Call(opts, result, method, params...)
  1137  }
  1138  
  1139  // Transfer initiates a plain transaction to move funds to the contract, calling
  1140  // its default method if one is available.
  1141  func (_ContentHashResolver *ContentHashResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1142  	return _ContentHashResolver.Contract.contract.Transfer(opts)
  1143  }
  1144  
  1145  // Transact invokes the (paid) contract method with params as input values.
  1146  func (_ContentHashResolver *ContentHashResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1147  	return _ContentHashResolver.Contract.contract.Transact(opts, method, params...)
  1148  }
  1149  
  1150  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  1151  //
  1152  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  1153  func (_ContentHashResolver *ContentHashResolverCaller) Contenthash(opts *bind.CallOpts, node [32]byte) ([]byte, error) {
  1154  	var out []interface{}
  1155  	err := _ContentHashResolver.contract.Call(opts, &out, "contenthash", node)
  1156  
  1157  	if err != nil {
  1158  		return *new([]byte), err
  1159  	}
  1160  
  1161  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  1162  
  1163  	return out0, err
  1164  
  1165  }
  1166  
  1167  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  1168  //
  1169  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  1170  func (_ContentHashResolver *ContentHashResolverSession) Contenthash(node [32]byte) ([]byte, error) {
  1171  	return _ContentHashResolver.Contract.Contenthash(&_ContentHashResolver.CallOpts, node)
  1172  }
  1173  
  1174  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  1175  //
  1176  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  1177  func (_ContentHashResolver *ContentHashResolverCallerSession) Contenthash(node [32]byte) ([]byte, error) {
  1178  	return _ContentHashResolver.Contract.Contenthash(&_ContentHashResolver.CallOpts, node)
  1179  }
  1180  
  1181  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1182  //
  1183  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1184  func (_ContentHashResolver *ContentHashResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  1185  	var out []interface{}
  1186  	err := _ContentHashResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  1187  
  1188  	if err != nil {
  1189  		return *new(bool), err
  1190  	}
  1191  
  1192  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1193  
  1194  	return out0, err
  1195  
  1196  }
  1197  
  1198  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1199  //
  1200  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1201  func (_ContentHashResolver *ContentHashResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  1202  	return _ContentHashResolver.Contract.SupportsInterface(&_ContentHashResolver.CallOpts, interfaceID)
  1203  }
  1204  
  1205  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1206  //
  1207  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1208  func (_ContentHashResolver *ContentHashResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  1209  	return _ContentHashResolver.Contract.SupportsInterface(&_ContentHashResolver.CallOpts, interfaceID)
  1210  }
  1211  
  1212  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  1213  //
  1214  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  1215  func (_ContentHashResolver *ContentHashResolverTransactor) SetContenthash(opts *bind.TransactOpts, node [32]byte, hash []byte) (*types.Transaction, error) {
  1216  	return _ContentHashResolver.contract.Transact(opts, "setContenthash", node, hash)
  1217  }
  1218  
  1219  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  1220  //
  1221  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  1222  func (_ContentHashResolver *ContentHashResolverSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
  1223  	return _ContentHashResolver.Contract.SetContenthash(&_ContentHashResolver.TransactOpts, node, hash)
  1224  }
  1225  
  1226  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  1227  //
  1228  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  1229  func (_ContentHashResolver *ContentHashResolverTransactorSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
  1230  	return _ContentHashResolver.Contract.SetContenthash(&_ContentHashResolver.TransactOpts, node, hash)
  1231  }
  1232  
  1233  // ContentHashResolverContenthashChangedIterator is returned from FilterContenthashChanged and is used to iterate over the raw logs and unpacked data for ContenthashChanged events raised by the ContentHashResolver contract.
  1234  type ContentHashResolverContenthashChangedIterator struct {
  1235  	Event *ContentHashResolverContenthashChanged // Event containing the contract specifics and raw log
  1236  
  1237  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1238  	event    string              // Event name to use for unpacking event data
  1239  
  1240  	logs chan types.Log        // Log channel receiving the found contract events
  1241  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1242  	done bool                  // Whether the subscription completed delivering logs
  1243  	fail error                 // Occurred error to stop iteration
  1244  }
  1245  
  1246  // Next advances the iterator to the subsequent event, returning whether there
  1247  // are any more events found. In case of a retrieval or parsing error, false is
  1248  // returned and Error() can be queried for the exact failure.
  1249  func (it *ContentHashResolverContenthashChangedIterator) Next() bool {
  1250  	// If the iterator failed, stop iterating
  1251  	if it.fail != nil {
  1252  		return false
  1253  	}
  1254  	// If the iterator completed, deliver directly whatever's available
  1255  	if it.done {
  1256  		select {
  1257  		case log := <-it.logs:
  1258  			it.Event = new(ContentHashResolverContenthashChanged)
  1259  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1260  				it.fail = err
  1261  				return false
  1262  			}
  1263  			it.Event.Raw = log
  1264  			return true
  1265  
  1266  		default:
  1267  			return false
  1268  		}
  1269  	}
  1270  	// Iterator still in progress, wait for either a data or an error event
  1271  	select {
  1272  	case log := <-it.logs:
  1273  		it.Event = new(ContentHashResolverContenthashChanged)
  1274  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1275  			it.fail = err
  1276  			return false
  1277  		}
  1278  		it.Event.Raw = log
  1279  		return true
  1280  
  1281  	case err := <-it.sub.Err():
  1282  		it.done = true
  1283  		it.fail = err
  1284  		return it.Next()
  1285  	}
  1286  }
  1287  
  1288  // Error returns any retrieval or parsing error occurred during filtering.
  1289  func (it *ContentHashResolverContenthashChangedIterator) Error() error {
  1290  	return it.fail
  1291  }
  1292  
  1293  // Close terminates the iteration process, releasing any pending underlying
  1294  // resources.
  1295  func (it *ContentHashResolverContenthashChangedIterator) Close() error {
  1296  	it.sub.Unsubscribe()
  1297  	return nil
  1298  }
  1299  
  1300  // ContentHashResolverContenthashChanged represents a ContenthashChanged event raised by the ContentHashResolver contract.
  1301  type ContentHashResolverContenthashChanged struct {
  1302  	Node [32]byte
  1303  	Hash []byte
  1304  	Raw  types.Log // Blockchain specific contextual infos
  1305  }
  1306  
  1307  // FilterContenthashChanged is a free log retrieval operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  1308  //
  1309  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  1310  func (_ContentHashResolver *ContentHashResolverFilterer) FilterContenthashChanged(opts *bind.FilterOpts, node [][32]byte) (*ContentHashResolverContenthashChangedIterator, error) {
  1311  
  1312  	var nodeRule []interface{}
  1313  	for _, nodeItem := range node {
  1314  		nodeRule = append(nodeRule, nodeItem)
  1315  	}
  1316  
  1317  	logs, sub, err := _ContentHashResolver.contract.FilterLogs(opts, "ContenthashChanged", nodeRule)
  1318  	if err != nil {
  1319  		return nil, err
  1320  	}
  1321  	return &ContentHashResolverContenthashChangedIterator{contract: _ContentHashResolver.contract, event: "ContenthashChanged", logs: logs, sub: sub}, nil
  1322  }
  1323  
  1324  // WatchContenthashChanged is a free log subscription operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  1325  //
  1326  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  1327  func (_ContentHashResolver *ContentHashResolverFilterer) WatchContenthashChanged(opts *bind.WatchOpts, sink chan<- *ContentHashResolverContenthashChanged, node [][32]byte) (event.Subscription, error) {
  1328  
  1329  	var nodeRule []interface{}
  1330  	for _, nodeItem := range node {
  1331  		nodeRule = append(nodeRule, nodeItem)
  1332  	}
  1333  
  1334  	logs, sub, err := _ContentHashResolver.contract.WatchLogs(opts, "ContenthashChanged", nodeRule)
  1335  	if err != nil {
  1336  		return nil, err
  1337  	}
  1338  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1339  		defer sub.Unsubscribe()
  1340  		for {
  1341  			select {
  1342  			case log := <-logs:
  1343  				// New log arrived, parse the event and forward to the user
  1344  				event := new(ContentHashResolverContenthashChanged)
  1345  				if err := _ContentHashResolver.contract.UnpackLog(event, "ContenthashChanged", log); err != nil {
  1346  					return err
  1347  				}
  1348  				event.Raw = log
  1349  
  1350  				select {
  1351  				case sink <- event:
  1352  				case err := <-sub.Err():
  1353  					return err
  1354  				case <-quit:
  1355  					return nil
  1356  				}
  1357  			case err := <-sub.Err():
  1358  				return err
  1359  			case <-quit:
  1360  				return nil
  1361  			}
  1362  		}
  1363  	}), nil
  1364  }
  1365  
  1366  // ParseContenthashChanged is a log parse operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  1367  //
  1368  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  1369  func (_ContentHashResolver *ContentHashResolverFilterer) ParseContenthashChanged(log types.Log) (*ContentHashResolverContenthashChanged, error) {
  1370  	event := new(ContentHashResolverContenthashChanged)
  1371  	if err := _ContentHashResolver.contract.UnpackLog(event, "ContenthashChanged", log); err != nil {
  1372  		return nil, err
  1373  	}
  1374  	event.Raw = log
  1375  	return event, nil
  1376  }
  1377  
  1378  // DNSResolverABI is the input ABI used to generate the binding from.
  1379  const DNSResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"},{\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearDNSZone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"DNSZoneCleared\",\"type\":\"event\"}]"
  1380  
  1381  // DNSResolverFuncSigs maps the 4-byte function signature to its string representation.
  1382  var DNSResolverFuncSigs = map[string]string{
  1383  	"ad5780af": "clearDNSZone(bytes32)",
  1384  	"a8fa5682": "dnsRecord(bytes32,bytes32,uint16)",
  1385  	"4cbf6ba4": "hasDNSRecords(bytes32,bytes32)",
  1386  	"0af179d7": "setDNSRecords(bytes32,bytes)",
  1387  	"01ffc9a7": "supportsInterface(bytes4)",
  1388  }
  1389  
  1390  // DNSResolver is an auto generated Go binding around an Ethereum contract.
  1391  type DNSResolver struct {
  1392  	DNSResolverCaller     // Read-only binding to the contract
  1393  	DNSResolverTransactor // Write-only binding to the contract
  1394  	DNSResolverFilterer   // Log filterer for contract events
  1395  }
  1396  
  1397  // DNSResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  1398  type DNSResolverCaller struct {
  1399  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1400  }
  1401  
  1402  // DNSResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1403  type DNSResolverTransactor struct {
  1404  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1405  }
  1406  
  1407  // DNSResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1408  type DNSResolverFilterer struct {
  1409  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1410  }
  1411  
  1412  // DNSResolverSession is an auto generated Go binding around an Ethereum contract,
  1413  // with pre-set call and transact options.
  1414  type DNSResolverSession struct {
  1415  	Contract     *DNSResolver      // Generic contract binding to set the session for
  1416  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1417  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1418  }
  1419  
  1420  // DNSResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1421  // with pre-set call options.
  1422  type DNSResolverCallerSession struct {
  1423  	Contract *DNSResolverCaller // Generic contract caller binding to set the session for
  1424  	CallOpts bind.CallOpts      // Call options to use throughout this session
  1425  }
  1426  
  1427  // DNSResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1428  // with pre-set transact options.
  1429  type DNSResolverTransactorSession struct {
  1430  	Contract     *DNSResolverTransactor // Generic contract transactor binding to set the session for
  1431  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  1432  }
  1433  
  1434  // DNSResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  1435  type DNSResolverRaw struct {
  1436  	Contract *DNSResolver // Generic contract binding to access the raw methods on
  1437  }
  1438  
  1439  // DNSResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1440  type DNSResolverCallerRaw struct {
  1441  	Contract *DNSResolverCaller // Generic read-only contract binding to access the raw methods on
  1442  }
  1443  
  1444  // DNSResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1445  type DNSResolverTransactorRaw struct {
  1446  	Contract *DNSResolverTransactor // Generic write-only contract binding to access the raw methods on
  1447  }
  1448  
  1449  // NewDNSResolver creates a new instance of DNSResolver, bound to a specific deployed contract.
  1450  func NewDNSResolver(address common.Address, backend bind.ContractBackend) (*DNSResolver, error) {
  1451  	contract, err := bindDNSResolver(address, backend, backend, backend)
  1452  	if err != nil {
  1453  		return nil, err
  1454  	}
  1455  	return &DNSResolver{DNSResolverCaller: DNSResolverCaller{contract: contract}, DNSResolverTransactor: DNSResolverTransactor{contract: contract}, DNSResolverFilterer: DNSResolverFilterer{contract: contract}}, nil
  1456  }
  1457  
  1458  // NewDNSResolverCaller creates a new read-only instance of DNSResolver, bound to a specific deployed contract.
  1459  func NewDNSResolverCaller(address common.Address, caller bind.ContractCaller) (*DNSResolverCaller, error) {
  1460  	contract, err := bindDNSResolver(address, caller, nil, nil)
  1461  	if err != nil {
  1462  		return nil, err
  1463  	}
  1464  	return &DNSResolverCaller{contract: contract}, nil
  1465  }
  1466  
  1467  // NewDNSResolverTransactor creates a new write-only instance of DNSResolver, bound to a specific deployed contract.
  1468  func NewDNSResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*DNSResolverTransactor, error) {
  1469  	contract, err := bindDNSResolver(address, nil, transactor, nil)
  1470  	if err != nil {
  1471  		return nil, err
  1472  	}
  1473  	return &DNSResolverTransactor{contract: contract}, nil
  1474  }
  1475  
  1476  // NewDNSResolverFilterer creates a new log filterer instance of DNSResolver, bound to a specific deployed contract.
  1477  func NewDNSResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*DNSResolverFilterer, error) {
  1478  	contract, err := bindDNSResolver(address, nil, nil, filterer)
  1479  	if err != nil {
  1480  		return nil, err
  1481  	}
  1482  	return &DNSResolverFilterer{contract: contract}, nil
  1483  }
  1484  
  1485  // bindDNSResolver binds a generic wrapper to an already deployed contract.
  1486  func bindDNSResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1487  	parsed, err := abi.JSON(strings.NewReader(DNSResolverABI))
  1488  	if err != nil {
  1489  		return nil, err
  1490  	}
  1491  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1492  }
  1493  
  1494  // Call invokes the (constant) contract method with params as input values and
  1495  // sets the output to result. The result type might be a single field for simple
  1496  // returns, a slice of interfaces for anonymous returns and a struct for named
  1497  // returns.
  1498  func (_DNSResolver *DNSResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1499  	return _DNSResolver.Contract.DNSResolverCaller.contract.Call(opts, result, method, params...)
  1500  }
  1501  
  1502  // Transfer initiates a plain transaction to move funds to the contract, calling
  1503  // its default method if one is available.
  1504  func (_DNSResolver *DNSResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1505  	return _DNSResolver.Contract.DNSResolverTransactor.contract.Transfer(opts)
  1506  }
  1507  
  1508  // Transact invokes the (paid) contract method with params as input values.
  1509  func (_DNSResolver *DNSResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1510  	return _DNSResolver.Contract.DNSResolverTransactor.contract.Transact(opts, method, params...)
  1511  }
  1512  
  1513  // Call invokes the (constant) contract method with params as input values and
  1514  // sets the output to result. The result type might be a single field for simple
  1515  // returns, a slice of interfaces for anonymous returns and a struct for named
  1516  // returns.
  1517  func (_DNSResolver *DNSResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1518  	return _DNSResolver.Contract.contract.Call(opts, result, method, params...)
  1519  }
  1520  
  1521  // Transfer initiates a plain transaction to move funds to the contract, calling
  1522  // its default method if one is available.
  1523  func (_DNSResolver *DNSResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1524  	return _DNSResolver.Contract.contract.Transfer(opts)
  1525  }
  1526  
  1527  // Transact invokes the (paid) contract method with params as input values.
  1528  func (_DNSResolver *DNSResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1529  	return _DNSResolver.Contract.contract.Transact(opts, method, params...)
  1530  }
  1531  
  1532  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  1533  //
  1534  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  1535  func (_DNSResolver *DNSResolverCaller) DnsRecord(opts *bind.CallOpts, node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  1536  	var out []interface{}
  1537  	err := _DNSResolver.contract.Call(opts, &out, "dnsRecord", node, name, resource)
  1538  
  1539  	if err != nil {
  1540  		return *new([]byte), err
  1541  	}
  1542  
  1543  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  1544  
  1545  	return out0, err
  1546  
  1547  }
  1548  
  1549  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  1550  //
  1551  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  1552  func (_DNSResolver *DNSResolverSession) DnsRecord(node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  1553  	return _DNSResolver.Contract.DnsRecord(&_DNSResolver.CallOpts, node, name, resource)
  1554  }
  1555  
  1556  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  1557  //
  1558  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  1559  func (_DNSResolver *DNSResolverCallerSession) DnsRecord(node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  1560  	return _DNSResolver.Contract.DnsRecord(&_DNSResolver.CallOpts, node, name, resource)
  1561  }
  1562  
  1563  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  1564  //
  1565  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  1566  func (_DNSResolver *DNSResolverCaller) HasDNSRecords(opts *bind.CallOpts, node [32]byte, name [32]byte) (bool, error) {
  1567  	var out []interface{}
  1568  	err := _DNSResolver.contract.Call(opts, &out, "hasDNSRecords", node, name)
  1569  
  1570  	if err != nil {
  1571  		return *new(bool), err
  1572  	}
  1573  
  1574  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1575  
  1576  	return out0, err
  1577  
  1578  }
  1579  
  1580  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  1581  //
  1582  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  1583  func (_DNSResolver *DNSResolverSession) HasDNSRecords(node [32]byte, name [32]byte) (bool, error) {
  1584  	return _DNSResolver.Contract.HasDNSRecords(&_DNSResolver.CallOpts, node, name)
  1585  }
  1586  
  1587  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  1588  //
  1589  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  1590  func (_DNSResolver *DNSResolverCallerSession) HasDNSRecords(node [32]byte, name [32]byte) (bool, error) {
  1591  	return _DNSResolver.Contract.HasDNSRecords(&_DNSResolver.CallOpts, node, name)
  1592  }
  1593  
  1594  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1595  //
  1596  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1597  func (_DNSResolver *DNSResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  1598  	var out []interface{}
  1599  	err := _DNSResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  1600  
  1601  	if err != nil {
  1602  		return *new(bool), err
  1603  	}
  1604  
  1605  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1606  
  1607  	return out0, err
  1608  
  1609  }
  1610  
  1611  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1612  //
  1613  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1614  func (_DNSResolver *DNSResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  1615  	return _DNSResolver.Contract.SupportsInterface(&_DNSResolver.CallOpts, interfaceID)
  1616  }
  1617  
  1618  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1619  //
  1620  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  1621  func (_DNSResolver *DNSResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  1622  	return _DNSResolver.Contract.SupportsInterface(&_DNSResolver.CallOpts, interfaceID)
  1623  }
  1624  
  1625  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  1626  //
  1627  // Solidity: function clearDNSZone(bytes32 node) returns()
  1628  func (_DNSResolver *DNSResolverTransactor) ClearDNSZone(opts *bind.TransactOpts, node [32]byte) (*types.Transaction, error) {
  1629  	return _DNSResolver.contract.Transact(opts, "clearDNSZone", node)
  1630  }
  1631  
  1632  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  1633  //
  1634  // Solidity: function clearDNSZone(bytes32 node) returns()
  1635  func (_DNSResolver *DNSResolverSession) ClearDNSZone(node [32]byte) (*types.Transaction, error) {
  1636  	return _DNSResolver.Contract.ClearDNSZone(&_DNSResolver.TransactOpts, node)
  1637  }
  1638  
  1639  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  1640  //
  1641  // Solidity: function clearDNSZone(bytes32 node) returns()
  1642  func (_DNSResolver *DNSResolverTransactorSession) ClearDNSZone(node [32]byte) (*types.Transaction, error) {
  1643  	return _DNSResolver.Contract.ClearDNSZone(&_DNSResolver.TransactOpts, node)
  1644  }
  1645  
  1646  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  1647  //
  1648  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  1649  func (_DNSResolver *DNSResolverTransactor) SetDNSRecords(opts *bind.TransactOpts, node [32]byte, data []byte) (*types.Transaction, error) {
  1650  	return _DNSResolver.contract.Transact(opts, "setDNSRecords", node, data)
  1651  }
  1652  
  1653  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  1654  //
  1655  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  1656  func (_DNSResolver *DNSResolverSession) SetDNSRecords(node [32]byte, data []byte) (*types.Transaction, error) {
  1657  	return _DNSResolver.Contract.SetDNSRecords(&_DNSResolver.TransactOpts, node, data)
  1658  }
  1659  
  1660  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  1661  //
  1662  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  1663  func (_DNSResolver *DNSResolverTransactorSession) SetDNSRecords(node [32]byte, data []byte) (*types.Transaction, error) {
  1664  	return _DNSResolver.Contract.SetDNSRecords(&_DNSResolver.TransactOpts, node, data)
  1665  }
  1666  
  1667  // DNSResolverDNSRecordChangedIterator is returned from FilterDNSRecordChanged and is used to iterate over the raw logs and unpacked data for DNSRecordChanged events raised by the DNSResolver contract.
  1668  type DNSResolverDNSRecordChangedIterator struct {
  1669  	Event *DNSResolverDNSRecordChanged // Event containing the contract specifics and raw log
  1670  
  1671  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1672  	event    string              // Event name to use for unpacking event data
  1673  
  1674  	logs chan types.Log        // Log channel receiving the found contract events
  1675  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1676  	done bool                  // Whether the subscription completed delivering logs
  1677  	fail error                 // Occurred error to stop iteration
  1678  }
  1679  
  1680  // Next advances the iterator to the subsequent event, returning whether there
  1681  // are any more events found. In case of a retrieval or parsing error, false is
  1682  // returned and Error() can be queried for the exact failure.
  1683  func (it *DNSResolverDNSRecordChangedIterator) Next() bool {
  1684  	// If the iterator failed, stop iterating
  1685  	if it.fail != nil {
  1686  		return false
  1687  	}
  1688  	// If the iterator completed, deliver directly whatever's available
  1689  	if it.done {
  1690  		select {
  1691  		case log := <-it.logs:
  1692  			it.Event = new(DNSResolverDNSRecordChanged)
  1693  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1694  				it.fail = err
  1695  				return false
  1696  			}
  1697  			it.Event.Raw = log
  1698  			return true
  1699  
  1700  		default:
  1701  			return false
  1702  		}
  1703  	}
  1704  	// Iterator still in progress, wait for either a data or an error event
  1705  	select {
  1706  	case log := <-it.logs:
  1707  		it.Event = new(DNSResolverDNSRecordChanged)
  1708  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1709  			it.fail = err
  1710  			return false
  1711  		}
  1712  		it.Event.Raw = log
  1713  		return true
  1714  
  1715  	case err := <-it.sub.Err():
  1716  		it.done = true
  1717  		it.fail = err
  1718  		return it.Next()
  1719  	}
  1720  }
  1721  
  1722  // Error returns any retrieval or parsing error occurred during filtering.
  1723  func (it *DNSResolverDNSRecordChangedIterator) Error() error {
  1724  	return it.fail
  1725  }
  1726  
  1727  // Close terminates the iteration process, releasing any pending underlying
  1728  // resources.
  1729  func (it *DNSResolverDNSRecordChangedIterator) Close() error {
  1730  	it.sub.Unsubscribe()
  1731  	return nil
  1732  }
  1733  
  1734  // DNSResolverDNSRecordChanged represents a DNSRecordChanged event raised by the DNSResolver contract.
  1735  type DNSResolverDNSRecordChanged struct {
  1736  	Node     [32]byte
  1737  	Name     []byte
  1738  	Resource uint16
  1739  	Record   []byte
  1740  	Raw      types.Log // Blockchain specific contextual infos
  1741  }
  1742  
  1743  // FilterDNSRecordChanged is a free log retrieval operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  1744  //
  1745  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  1746  func (_DNSResolver *DNSResolverFilterer) FilterDNSRecordChanged(opts *bind.FilterOpts, node [][32]byte) (*DNSResolverDNSRecordChangedIterator, error) {
  1747  
  1748  	var nodeRule []interface{}
  1749  	for _, nodeItem := range node {
  1750  		nodeRule = append(nodeRule, nodeItem)
  1751  	}
  1752  
  1753  	logs, sub, err := _DNSResolver.contract.FilterLogs(opts, "DNSRecordChanged", nodeRule)
  1754  	if err != nil {
  1755  		return nil, err
  1756  	}
  1757  	return &DNSResolverDNSRecordChangedIterator{contract: _DNSResolver.contract, event: "DNSRecordChanged", logs: logs, sub: sub}, nil
  1758  }
  1759  
  1760  // WatchDNSRecordChanged is a free log subscription operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  1761  //
  1762  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  1763  func (_DNSResolver *DNSResolverFilterer) WatchDNSRecordChanged(opts *bind.WatchOpts, sink chan<- *DNSResolverDNSRecordChanged, node [][32]byte) (event.Subscription, error) {
  1764  
  1765  	var nodeRule []interface{}
  1766  	for _, nodeItem := range node {
  1767  		nodeRule = append(nodeRule, nodeItem)
  1768  	}
  1769  
  1770  	logs, sub, err := _DNSResolver.contract.WatchLogs(opts, "DNSRecordChanged", nodeRule)
  1771  	if err != nil {
  1772  		return nil, err
  1773  	}
  1774  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1775  		defer sub.Unsubscribe()
  1776  		for {
  1777  			select {
  1778  			case log := <-logs:
  1779  				// New log arrived, parse the event and forward to the user
  1780  				event := new(DNSResolverDNSRecordChanged)
  1781  				if err := _DNSResolver.contract.UnpackLog(event, "DNSRecordChanged", log); err != nil {
  1782  					return err
  1783  				}
  1784  				event.Raw = log
  1785  
  1786  				select {
  1787  				case sink <- event:
  1788  				case err := <-sub.Err():
  1789  					return err
  1790  				case <-quit:
  1791  					return nil
  1792  				}
  1793  			case err := <-sub.Err():
  1794  				return err
  1795  			case <-quit:
  1796  				return nil
  1797  			}
  1798  		}
  1799  	}), nil
  1800  }
  1801  
  1802  // ParseDNSRecordChanged is a log parse operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  1803  //
  1804  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  1805  func (_DNSResolver *DNSResolverFilterer) ParseDNSRecordChanged(log types.Log) (*DNSResolverDNSRecordChanged, error) {
  1806  	event := new(DNSResolverDNSRecordChanged)
  1807  	if err := _DNSResolver.contract.UnpackLog(event, "DNSRecordChanged", log); err != nil {
  1808  		return nil, err
  1809  	}
  1810  	event.Raw = log
  1811  	return event, nil
  1812  }
  1813  
  1814  // DNSResolverDNSRecordDeletedIterator is returned from FilterDNSRecordDeleted and is used to iterate over the raw logs and unpacked data for DNSRecordDeleted events raised by the DNSResolver contract.
  1815  type DNSResolverDNSRecordDeletedIterator struct {
  1816  	Event *DNSResolverDNSRecordDeleted // Event containing the contract specifics and raw log
  1817  
  1818  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1819  	event    string              // Event name to use for unpacking event data
  1820  
  1821  	logs chan types.Log        // Log channel receiving the found contract events
  1822  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1823  	done bool                  // Whether the subscription completed delivering logs
  1824  	fail error                 // Occurred error to stop iteration
  1825  }
  1826  
  1827  // Next advances the iterator to the subsequent event, returning whether there
  1828  // are any more events found. In case of a retrieval or parsing error, false is
  1829  // returned and Error() can be queried for the exact failure.
  1830  func (it *DNSResolverDNSRecordDeletedIterator) Next() bool {
  1831  	// If the iterator failed, stop iterating
  1832  	if it.fail != nil {
  1833  		return false
  1834  	}
  1835  	// If the iterator completed, deliver directly whatever's available
  1836  	if it.done {
  1837  		select {
  1838  		case log := <-it.logs:
  1839  			it.Event = new(DNSResolverDNSRecordDeleted)
  1840  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1841  				it.fail = err
  1842  				return false
  1843  			}
  1844  			it.Event.Raw = log
  1845  			return true
  1846  
  1847  		default:
  1848  			return false
  1849  		}
  1850  	}
  1851  	// Iterator still in progress, wait for either a data or an error event
  1852  	select {
  1853  	case log := <-it.logs:
  1854  		it.Event = new(DNSResolverDNSRecordDeleted)
  1855  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1856  			it.fail = err
  1857  			return false
  1858  		}
  1859  		it.Event.Raw = log
  1860  		return true
  1861  
  1862  	case err := <-it.sub.Err():
  1863  		it.done = true
  1864  		it.fail = err
  1865  		return it.Next()
  1866  	}
  1867  }
  1868  
  1869  // Error returns any retrieval or parsing error occurred during filtering.
  1870  func (it *DNSResolverDNSRecordDeletedIterator) Error() error {
  1871  	return it.fail
  1872  }
  1873  
  1874  // Close terminates the iteration process, releasing any pending underlying
  1875  // resources.
  1876  func (it *DNSResolverDNSRecordDeletedIterator) Close() error {
  1877  	it.sub.Unsubscribe()
  1878  	return nil
  1879  }
  1880  
  1881  // DNSResolverDNSRecordDeleted represents a DNSRecordDeleted event raised by the DNSResolver contract.
  1882  type DNSResolverDNSRecordDeleted struct {
  1883  	Node     [32]byte
  1884  	Name     []byte
  1885  	Resource uint16
  1886  	Raw      types.Log // Blockchain specific contextual infos
  1887  }
  1888  
  1889  // FilterDNSRecordDeleted is a free log retrieval operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  1890  //
  1891  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  1892  func (_DNSResolver *DNSResolverFilterer) FilterDNSRecordDeleted(opts *bind.FilterOpts, node [][32]byte) (*DNSResolverDNSRecordDeletedIterator, error) {
  1893  
  1894  	var nodeRule []interface{}
  1895  	for _, nodeItem := range node {
  1896  		nodeRule = append(nodeRule, nodeItem)
  1897  	}
  1898  
  1899  	logs, sub, err := _DNSResolver.contract.FilterLogs(opts, "DNSRecordDeleted", nodeRule)
  1900  	if err != nil {
  1901  		return nil, err
  1902  	}
  1903  	return &DNSResolverDNSRecordDeletedIterator{contract: _DNSResolver.contract, event: "DNSRecordDeleted", logs: logs, sub: sub}, nil
  1904  }
  1905  
  1906  // WatchDNSRecordDeleted is a free log subscription operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  1907  //
  1908  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  1909  func (_DNSResolver *DNSResolverFilterer) WatchDNSRecordDeleted(opts *bind.WatchOpts, sink chan<- *DNSResolverDNSRecordDeleted, node [][32]byte) (event.Subscription, error) {
  1910  
  1911  	var nodeRule []interface{}
  1912  	for _, nodeItem := range node {
  1913  		nodeRule = append(nodeRule, nodeItem)
  1914  	}
  1915  
  1916  	logs, sub, err := _DNSResolver.contract.WatchLogs(opts, "DNSRecordDeleted", nodeRule)
  1917  	if err != nil {
  1918  		return nil, err
  1919  	}
  1920  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1921  		defer sub.Unsubscribe()
  1922  		for {
  1923  			select {
  1924  			case log := <-logs:
  1925  				// New log arrived, parse the event and forward to the user
  1926  				event := new(DNSResolverDNSRecordDeleted)
  1927  				if err := _DNSResolver.contract.UnpackLog(event, "DNSRecordDeleted", log); err != nil {
  1928  					return err
  1929  				}
  1930  				event.Raw = log
  1931  
  1932  				select {
  1933  				case sink <- event:
  1934  				case err := <-sub.Err():
  1935  					return err
  1936  				case <-quit:
  1937  					return nil
  1938  				}
  1939  			case err := <-sub.Err():
  1940  				return err
  1941  			case <-quit:
  1942  				return nil
  1943  			}
  1944  		}
  1945  	}), nil
  1946  }
  1947  
  1948  // ParseDNSRecordDeleted is a log parse operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  1949  //
  1950  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  1951  func (_DNSResolver *DNSResolverFilterer) ParseDNSRecordDeleted(log types.Log) (*DNSResolverDNSRecordDeleted, error) {
  1952  	event := new(DNSResolverDNSRecordDeleted)
  1953  	if err := _DNSResolver.contract.UnpackLog(event, "DNSRecordDeleted", log); err != nil {
  1954  		return nil, err
  1955  	}
  1956  	event.Raw = log
  1957  	return event, nil
  1958  }
  1959  
  1960  // DNSResolverDNSZoneClearedIterator is returned from FilterDNSZoneCleared and is used to iterate over the raw logs and unpacked data for DNSZoneCleared events raised by the DNSResolver contract.
  1961  type DNSResolverDNSZoneClearedIterator struct {
  1962  	Event *DNSResolverDNSZoneCleared // Event containing the contract specifics and raw log
  1963  
  1964  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1965  	event    string              // Event name to use for unpacking event data
  1966  
  1967  	logs chan types.Log        // Log channel receiving the found contract events
  1968  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1969  	done bool                  // Whether the subscription completed delivering logs
  1970  	fail error                 // Occurred error to stop iteration
  1971  }
  1972  
  1973  // Next advances the iterator to the subsequent event, returning whether there
  1974  // are any more events found. In case of a retrieval or parsing error, false is
  1975  // returned and Error() can be queried for the exact failure.
  1976  func (it *DNSResolverDNSZoneClearedIterator) Next() bool {
  1977  	// If the iterator failed, stop iterating
  1978  	if it.fail != nil {
  1979  		return false
  1980  	}
  1981  	// If the iterator completed, deliver directly whatever's available
  1982  	if it.done {
  1983  		select {
  1984  		case log := <-it.logs:
  1985  			it.Event = new(DNSResolverDNSZoneCleared)
  1986  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1987  				it.fail = err
  1988  				return false
  1989  			}
  1990  			it.Event.Raw = log
  1991  			return true
  1992  
  1993  		default:
  1994  			return false
  1995  		}
  1996  	}
  1997  	// Iterator still in progress, wait for either a data or an error event
  1998  	select {
  1999  	case log := <-it.logs:
  2000  		it.Event = new(DNSResolverDNSZoneCleared)
  2001  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2002  			it.fail = err
  2003  			return false
  2004  		}
  2005  		it.Event.Raw = log
  2006  		return true
  2007  
  2008  	case err := <-it.sub.Err():
  2009  		it.done = true
  2010  		it.fail = err
  2011  		return it.Next()
  2012  	}
  2013  }
  2014  
  2015  // Error returns any retrieval or parsing error occurred during filtering.
  2016  func (it *DNSResolverDNSZoneClearedIterator) Error() error {
  2017  	return it.fail
  2018  }
  2019  
  2020  // Close terminates the iteration process, releasing any pending underlying
  2021  // resources.
  2022  func (it *DNSResolverDNSZoneClearedIterator) Close() error {
  2023  	it.sub.Unsubscribe()
  2024  	return nil
  2025  }
  2026  
  2027  // DNSResolverDNSZoneCleared represents a DNSZoneCleared event raised by the DNSResolver contract.
  2028  type DNSResolverDNSZoneCleared struct {
  2029  	Node [32]byte
  2030  	Raw  types.Log // Blockchain specific contextual infos
  2031  }
  2032  
  2033  // FilterDNSZoneCleared is a free log retrieval operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  2034  //
  2035  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  2036  func (_DNSResolver *DNSResolverFilterer) FilterDNSZoneCleared(opts *bind.FilterOpts, node [][32]byte) (*DNSResolverDNSZoneClearedIterator, error) {
  2037  
  2038  	var nodeRule []interface{}
  2039  	for _, nodeItem := range node {
  2040  		nodeRule = append(nodeRule, nodeItem)
  2041  	}
  2042  
  2043  	logs, sub, err := _DNSResolver.contract.FilterLogs(opts, "DNSZoneCleared", nodeRule)
  2044  	if err != nil {
  2045  		return nil, err
  2046  	}
  2047  	return &DNSResolverDNSZoneClearedIterator{contract: _DNSResolver.contract, event: "DNSZoneCleared", logs: logs, sub: sub}, nil
  2048  }
  2049  
  2050  // WatchDNSZoneCleared is a free log subscription operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  2051  //
  2052  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  2053  func (_DNSResolver *DNSResolverFilterer) WatchDNSZoneCleared(opts *bind.WatchOpts, sink chan<- *DNSResolverDNSZoneCleared, node [][32]byte) (event.Subscription, error) {
  2054  
  2055  	var nodeRule []interface{}
  2056  	for _, nodeItem := range node {
  2057  		nodeRule = append(nodeRule, nodeItem)
  2058  	}
  2059  
  2060  	logs, sub, err := _DNSResolver.contract.WatchLogs(opts, "DNSZoneCleared", nodeRule)
  2061  	if err != nil {
  2062  		return nil, err
  2063  	}
  2064  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2065  		defer sub.Unsubscribe()
  2066  		for {
  2067  			select {
  2068  			case log := <-logs:
  2069  				// New log arrived, parse the event and forward to the user
  2070  				event := new(DNSResolverDNSZoneCleared)
  2071  				if err := _DNSResolver.contract.UnpackLog(event, "DNSZoneCleared", log); err != nil {
  2072  					return err
  2073  				}
  2074  				event.Raw = log
  2075  
  2076  				select {
  2077  				case sink <- event:
  2078  				case err := <-sub.Err():
  2079  					return err
  2080  				case <-quit:
  2081  					return nil
  2082  				}
  2083  			case err := <-sub.Err():
  2084  				return err
  2085  			case <-quit:
  2086  				return nil
  2087  			}
  2088  		}
  2089  	}), nil
  2090  }
  2091  
  2092  // ParseDNSZoneCleared is a log parse operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  2093  //
  2094  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  2095  func (_DNSResolver *DNSResolverFilterer) ParseDNSZoneCleared(log types.Log) (*DNSResolverDNSZoneCleared, error) {
  2096  	event := new(DNSResolverDNSZoneCleared)
  2097  	if err := _DNSResolver.contract.UnpackLog(event, "DNSZoneCleared", log); err != nil {
  2098  		return nil, err
  2099  	}
  2100  	event.Raw = log
  2101  	return event, nil
  2102  }
  2103  
  2104  // ENSABI is the input ABI used to generate the binding from.
  2105  const ENSABI = "[{\"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\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"label\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  2106  
  2107  // ENSFuncSigs maps the 4-byte function signature to its string representation.
  2108  var ENSFuncSigs = map[string]string{
  2109  	"e985e9c5": "isApprovedForAll(address,address)",
  2110  	"02571be3": "owner(bytes32)",
  2111  	"f79fe538": "recordExists(bytes32)",
  2112  	"0178b8bf": "resolver(bytes32)",
  2113  	"a22cb465": "setApprovalForAll(address,bool)",
  2114  	"5b0fc9c3": "setOwner(bytes32,address)",
  2115  	"cf408823": "setRecord(bytes32,address,address,uint64)",
  2116  	"1896f70a": "setResolver(bytes32,address)",
  2117  	"06ab5923": "setSubnodeOwner(bytes32,bytes32,address)",
  2118  	"5ef2c7f0": "setSubnodeRecord(bytes32,bytes32,address,address,uint64)",
  2119  	"14ab9038": "setTTL(bytes32,uint64)",
  2120  	"16a25cbd": "ttl(bytes32)",
  2121  }
  2122  
  2123  // ENS is an auto generated Go binding around an Ethereum contract.
  2124  type ENS struct {
  2125  	ENSCaller     // Read-only binding to the contract
  2126  	ENSTransactor // Write-only binding to the contract
  2127  	ENSFilterer   // Log filterer for contract events
  2128  }
  2129  
  2130  // ENSCaller is an auto generated read-only Go binding around an Ethereum contract.
  2131  type ENSCaller struct {
  2132  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2133  }
  2134  
  2135  // ENSTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2136  type ENSTransactor struct {
  2137  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2138  }
  2139  
  2140  // ENSFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2141  type ENSFilterer struct {
  2142  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2143  }
  2144  
  2145  // ENSSession is an auto generated Go binding around an Ethereum contract,
  2146  // with pre-set call and transact options.
  2147  type ENSSession struct {
  2148  	Contract     *ENS              // Generic contract binding to set the session for
  2149  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2150  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2151  }
  2152  
  2153  // ENSCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2154  // with pre-set call options.
  2155  type ENSCallerSession struct {
  2156  	Contract *ENSCaller    // Generic contract caller binding to set the session for
  2157  	CallOpts bind.CallOpts // Call options to use throughout this session
  2158  }
  2159  
  2160  // ENSTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2161  // with pre-set transact options.
  2162  type ENSTransactorSession struct {
  2163  	Contract     *ENSTransactor    // Generic contract transactor binding to set the session for
  2164  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2165  }
  2166  
  2167  // ENSRaw is an auto generated low-level Go binding around an Ethereum contract.
  2168  type ENSRaw struct {
  2169  	Contract *ENS // Generic contract binding to access the raw methods on
  2170  }
  2171  
  2172  // ENSCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2173  type ENSCallerRaw struct {
  2174  	Contract *ENSCaller // Generic read-only contract binding to access the raw methods on
  2175  }
  2176  
  2177  // ENSTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2178  type ENSTransactorRaw struct {
  2179  	Contract *ENSTransactor // Generic write-only contract binding to access the raw methods on
  2180  }
  2181  
  2182  // NewENS creates a new instance of ENS, bound to a specific deployed contract.
  2183  func NewENS(address common.Address, backend bind.ContractBackend) (*ENS, error) {
  2184  	contract, err := bindENS(address, backend, backend, backend)
  2185  	if err != nil {
  2186  		return nil, err
  2187  	}
  2188  	return &ENS{ENSCaller: ENSCaller{contract: contract}, ENSTransactor: ENSTransactor{contract: contract}, ENSFilterer: ENSFilterer{contract: contract}}, nil
  2189  }
  2190  
  2191  // NewENSCaller creates a new read-only instance of ENS, bound to a specific deployed contract.
  2192  func NewENSCaller(address common.Address, caller bind.ContractCaller) (*ENSCaller, error) {
  2193  	contract, err := bindENS(address, caller, nil, nil)
  2194  	if err != nil {
  2195  		return nil, err
  2196  	}
  2197  	return &ENSCaller{contract: contract}, nil
  2198  }
  2199  
  2200  // NewENSTransactor creates a new write-only instance of ENS, bound to a specific deployed contract.
  2201  func NewENSTransactor(address common.Address, transactor bind.ContractTransactor) (*ENSTransactor, error) {
  2202  	contract, err := bindENS(address, nil, transactor, nil)
  2203  	if err != nil {
  2204  		return nil, err
  2205  	}
  2206  	return &ENSTransactor{contract: contract}, nil
  2207  }
  2208  
  2209  // NewENSFilterer creates a new log filterer instance of ENS, bound to a specific deployed contract.
  2210  func NewENSFilterer(address common.Address, filterer bind.ContractFilterer) (*ENSFilterer, error) {
  2211  	contract, err := bindENS(address, nil, nil, filterer)
  2212  	if err != nil {
  2213  		return nil, err
  2214  	}
  2215  	return &ENSFilterer{contract: contract}, nil
  2216  }
  2217  
  2218  // bindENS binds a generic wrapper to an already deployed contract.
  2219  func bindENS(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2220  	parsed, err := abi.JSON(strings.NewReader(ENSABI))
  2221  	if err != nil {
  2222  		return nil, err
  2223  	}
  2224  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2225  }
  2226  
  2227  // Call invokes the (constant) contract method with params as input values and
  2228  // sets the output to result. The result type might be a single field for simple
  2229  // returns, a slice of interfaces for anonymous returns and a struct for named
  2230  // returns.
  2231  func (_ENS *ENSRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2232  	return _ENS.Contract.ENSCaller.contract.Call(opts, result, method, params...)
  2233  }
  2234  
  2235  // Transfer initiates a plain transaction to move funds to the contract, calling
  2236  // its default method if one is available.
  2237  func (_ENS *ENSRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2238  	return _ENS.Contract.ENSTransactor.contract.Transfer(opts)
  2239  }
  2240  
  2241  // Transact invokes the (paid) contract method with params as input values.
  2242  func (_ENS *ENSRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2243  	return _ENS.Contract.ENSTransactor.contract.Transact(opts, method, params...)
  2244  }
  2245  
  2246  // Call invokes the (constant) contract method with params as input values and
  2247  // sets the output to result. The result type might be a single field for simple
  2248  // returns, a slice of interfaces for anonymous returns and a struct for named
  2249  // returns.
  2250  func (_ENS *ENSCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2251  	return _ENS.Contract.contract.Call(opts, result, method, params...)
  2252  }
  2253  
  2254  // Transfer initiates a plain transaction to move funds to the contract, calling
  2255  // its default method if one is available.
  2256  func (_ENS *ENSTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2257  	return _ENS.Contract.contract.Transfer(opts)
  2258  }
  2259  
  2260  // Transact invokes the (paid) contract method with params as input values.
  2261  func (_ENS *ENSTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2262  	return _ENS.Contract.contract.Transact(opts, method, params...)
  2263  }
  2264  
  2265  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2266  //
  2267  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2268  func (_ENS *ENSCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  2269  	var out []interface{}
  2270  	err := _ENS.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  2271  
  2272  	if err != nil {
  2273  		return *new(bool), err
  2274  	}
  2275  
  2276  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2277  
  2278  	return out0, err
  2279  
  2280  }
  2281  
  2282  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2283  //
  2284  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2285  func (_ENS *ENSSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2286  	return _ENS.Contract.IsApprovedForAll(&_ENS.CallOpts, owner, operator)
  2287  }
  2288  
  2289  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2290  //
  2291  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2292  func (_ENS *ENSCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2293  	return _ENS.Contract.IsApprovedForAll(&_ENS.CallOpts, owner, operator)
  2294  }
  2295  
  2296  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  2297  //
  2298  // Solidity: function owner(bytes32 node) view returns(address)
  2299  func (_ENS *ENSCaller) Owner(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  2300  	var out []interface{}
  2301  	err := _ENS.contract.Call(opts, &out, "owner", node)
  2302  
  2303  	if err != nil {
  2304  		return *new(common.Address), err
  2305  	}
  2306  
  2307  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2308  
  2309  	return out0, err
  2310  
  2311  }
  2312  
  2313  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  2314  //
  2315  // Solidity: function owner(bytes32 node) view returns(address)
  2316  func (_ENS *ENSSession) Owner(node [32]byte) (common.Address, error) {
  2317  	return _ENS.Contract.Owner(&_ENS.CallOpts, node)
  2318  }
  2319  
  2320  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  2321  //
  2322  // Solidity: function owner(bytes32 node) view returns(address)
  2323  func (_ENS *ENSCallerSession) Owner(node [32]byte) (common.Address, error) {
  2324  	return _ENS.Contract.Owner(&_ENS.CallOpts, node)
  2325  }
  2326  
  2327  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  2328  //
  2329  // Solidity: function recordExists(bytes32 node) view returns(bool)
  2330  func (_ENS *ENSCaller) RecordExists(opts *bind.CallOpts, node [32]byte) (bool, error) {
  2331  	var out []interface{}
  2332  	err := _ENS.contract.Call(opts, &out, "recordExists", node)
  2333  
  2334  	if err != nil {
  2335  		return *new(bool), err
  2336  	}
  2337  
  2338  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2339  
  2340  	return out0, err
  2341  
  2342  }
  2343  
  2344  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  2345  //
  2346  // Solidity: function recordExists(bytes32 node) view returns(bool)
  2347  func (_ENS *ENSSession) RecordExists(node [32]byte) (bool, error) {
  2348  	return _ENS.Contract.RecordExists(&_ENS.CallOpts, node)
  2349  }
  2350  
  2351  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  2352  //
  2353  // Solidity: function recordExists(bytes32 node) view returns(bool)
  2354  func (_ENS *ENSCallerSession) RecordExists(node [32]byte) (bool, error) {
  2355  	return _ENS.Contract.RecordExists(&_ENS.CallOpts, node)
  2356  }
  2357  
  2358  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  2359  //
  2360  // Solidity: function resolver(bytes32 node) view returns(address)
  2361  func (_ENS *ENSCaller) Resolver(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  2362  	var out []interface{}
  2363  	err := _ENS.contract.Call(opts, &out, "resolver", node)
  2364  
  2365  	if err != nil {
  2366  		return *new(common.Address), err
  2367  	}
  2368  
  2369  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2370  
  2371  	return out0, err
  2372  
  2373  }
  2374  
  2375  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  2376  //
  2377  // Solidity: function resolver(bytes32 node) view returns(address)
  2378  func (_ENS *ENSSession) Resolver(node [32]byte) (common.Address, error) {
  2379  	return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
  2380  }
  2381  
  2382  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  2383  //
  2384  // Solidity: function resolver(bytes32 node) view returns(address)
  2385  func (_ENS *ENSCallerSession) Resolver(node [32]byte) (common.Address, error) {
  2386  	return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
  2387  }
  2388  
  2389  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  2390  //
  2391  // Solidity: function ttl(bytes32 node) view returns(uint64)
  2392  func (_ENS *ENSCaller) Ttl(opts *bind.CallOpts, node [32]byte) (uint64, error) {
  2393  	var out []interface{}
  2394  	err := _ENS.contract.Call(opts, &out, "ttl", node)
  2395  
  2396  	if err != nil {
  2397  		return *new(uint64), err
  2398  	}
  2399  
  2400  	out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
  2401  
  2402  	return out0, err
  2403  
  2404  }
  2405  
  2406  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  2407  //
  2408  // Solidity: function ttl(bytes32 node) view returns(uint64)
  2409  func (_ENS *ENSSession) Ttl(node [32]byte) (uint64, error) {
  2410  	return _ENS.Contract.Ttl(&_ENS.CallOpts, node)
  2411  }
  2412  
  2413  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  2414  //
  2415  // Solidity: function ttl(bytes32 node) view returns(uint64)
  2416  func (_ENS *ENSCallerSession) Ttl(node [32]byte) (uint64, error) {
  2417  	return _ENS.Contract.Ttl(&_ENS.CallOpts, node)
  2418  }
  2419  
  2420  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2421  //
  2422  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  2423  func (_ENS *ENSTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) {
  2424  	return _ENS.contract.Transact(opts, "setApprovalForAll", operator, approved)
  2425  }
  2426  
  2427  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2428  //
  2429  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  2430  func (_ENS *ENSSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  2431  	return _ENS.Contract.SetApprovalForAll(&_ENS.TransactOpts, operator, approved)
  2432  }
  2433  
  2434  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2435  //
  2436  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  2437  func (_ENS *ENSTransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  2438  	return _ENS.Contract.SetApprovalForAll(&_ENS.TransactOpts, operator, approved)
  2439  }
  2440  
  2441  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  2442  //
  2443  // Solidity: function setOwner(bytes32 node, address owner) returns()
  2444  func (_ENS *ENSTransactor) SetOwner(opts *bind.TransactOpts, node [32]byte, owner common.Address) (*types.Transaction, error) {
  2445  	return _ENS.contract.Transact(opts, "setOwner", node, owner)
  2446  }
  2447  
  2448  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  2449  //
  2450  // Solidity: function setOwner(bytes32 node, address owner) returns()
  2451  func (_ENS *ENSSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  2452  	return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
  2453  }
  2454  
  2455  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  2456  //
  2457  // Solidity: function setOwner(bytes32 node, address owner) returns()
  2458  func (_ENS *ENSTransactorSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  2459  	return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
  2460  }
  2461  
  2462  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  2463  //
  2464  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  2465  func (_ENS *ENSTransactor) SetRecord(opts *bind.TransactOpts, node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2466  	return _ENS.contract.Transact(opts, "setRecord", node, owner, resolver, ttl)
  2467  }
  2468  
  2469  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  2470  //
  2471  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  2472  func (_ENS *ENSSession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2473  	return _ENS.Contract.SetRecord(&_ENS.TransactOpts, node, owner, resolver, ttl)
  2474  }
  2475  
  2476  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  2477  //
  2478  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  2479  func (_ENS *ENSTransactorSession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2480  	return _ENS.Contract.SetRecord(&_ENS.TransactOpts, node, owner, resolver, ttl)
  2481  }
  2482  
  2483  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  2484  //
  2485  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  2486  func (_ENS *ENSTransactor) SetResolver(opts *bind.TransactOpts, node [32]byte, resolver common.Address) (*types.Transaction, error) {
  2487  	return _ENS.contract.Transact(opts, "setResolver", node, resolver)
  2488  }
  2489  
  2490  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  2491  //
  2492  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  2493  func (_ENS *ENSSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  2494  	return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
  2495  }
  2496  
  2497  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  2498  //
  2499  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  2500  func (_ENS *ENSTransactorSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  2501  	return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
  2502  }
  2503  
  2504  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  2505  //
  2506  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  2507  func (_ENS *ENSTransactor) SetSubnodeOwner(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  2508  	return _ENS.contract.Transact(opts, "setSubnodeOwner", node, label, owner)
  2509  }
  2510  
  2511  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  2512  //
  2513  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  2514  func (_ENS *ENSSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  2515  	return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
  2516  }
  2517  
  2518  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  2519  //
  2520  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  2521  func (_ENS *ENSTransactorSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  2522  	return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
  2523  }
  2524  
  2525  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  2526  //
  2527  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  2528  func (_ENS *ENSTransactor) SetSubnodeRecord(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2529  	return _ENS.contract.Transact(opts, "setSubnodeRecord", node, label, owner, resolver, ttl)
  2530  }
  2531  
  2532  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  2533  //
  2534  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  2535  func (_ENS *ENSSession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2536  	return _ENS.Contract.SetSubnodeRecord(&_ENS.TransactOpts, node, label, owner, resolver, ttl)
  2537  }
  2538  
  2539  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  2540  //
  2541  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  2542  func (_ENS *ENSTransactorSession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  2543  	return _ENS.Contract.SetSubnodeRecord(&_ENS.TransactOpts, node, label, owner, resolver, ttl)
  2544  }
  2545  
  2546  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  2547  //
  2548  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  2549  func (_ENS *ENSTransactor) SetTTL(opts *bind.TransactOpts, node [32]byte, ttl uint64) (*types.Transaction, error) {
  2550  	return _ENS.contract.Transact(opts, "setTTL", node, ttl)
  2551  }
  2552  
  2553  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  2554  //
  2555  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  2556  func (_ENS *ENSSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  2557  	return _ENS.Contract.SetTTL(&_ENS.TransactOpts, node, ttl)
  2558  }
  2559  
  2560  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  2561  //
  2562  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  2563  func (_ENS *ENSTransactorSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  2564  	return _ENS.Contract.SetTTL(&_ENS.TransactOpts, node, ttl)
  2565  }
  2566  
  2567  // ENSApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ENS contract.
  2568  type ENSApprovalForAllIterator struct {
  2569  	Event *ENSApprovalForAll // Event containing the contract specifics and raw log
  2570  
  2571  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2572  	event    string              // Event name to use for unpacking event data
  2573  
  2574  	logs chan types.Log        // Log channel receiving the found contract events
  2575  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2576  	done bool                  // Whether the subscription completed delivering logs
  2577  	fail error                 // Occurred error to stop iteration
  2578  }
  2579  
  2580  // Next advances the iterator to the subsequent event, returning whether there
  2581  // are any more events found. In case of a retrieval or parsing error, false is
  2582  // returned and Error() can be queried for the exact failure.
  2583  func (it *ENSApprovalForAllIterator) Next() bool {
  2584  	// If the iterator failed, stop iterating
  2585  	if it.fail != nil {
  2586  		return false
  2587  	}
  2588  	// If the iterator completed, deliver directly whatever's available
  2589  	if it.done {
  2590  		select {
  2591  		case log := <-it.logs:
  2592  			it.Event = new(ENSApprovalForAll)
  2593  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2594  				it.fail = err
  2595  				return false
  2596  			}
  2597  			it.Event.Raw = log
  2598  			return true
  2599  
  2600  		default:
  2601  			return false
  2602  		}
  2603  	}
  2604  	// Iterator still in progress, wait for either a data or an error event
  2605  	select {
  2606  	case log := <-it.logs:
  2607  		it.Event = new(ENSApprovalForAll)
  2608  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2609  			it.fail = err
  2610  			return false
  2611  		}
  2612  		it.Event.Raw = log
  2613  		return true
  2614  
  2615  	case err := <-it.sub.Err():
  2616  		it.done = true
  2617  		it.fail = err
  2618  		return it.Next()
  2619  	}
  2620  }
  2621  
  2622  // Error returns any retrieval or parsing error occurred during filtering.
  2623  func (it *ENSApprovalForAllIterator) Error() error {
  2624  	return it.fail
  2625  }
  2626  
  2627  // Close terminates the iteration process, releasing any pending underlying
  2628  // resources.
  2629  func (it *ENSApprovalForAllIterator) Close() error {
  2630  	it.sub.Unsubscribe()
  2631  	return nil
  2632  }
  2633  
  2634  // ENSApprovalForAll represents a ApprovalForAll event raised by the ENS contract.
  2635  type ENSApprovalForAll struct {
  2636  	Owner    common.Address
  2637  	Operator common.Address
  2638  	Approved bool
  2639  	Raw      types.Log // Blockchain specific contextual infos
  2640  }
  2641  
  2642  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2643  //
  2644  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2645  func (_ENS *ENSFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ENSApprovalForAllIterator, error) {
  2646  
  2647  	var ownerRule []interface{}
  2648  	for _, ownerItem := range owner {
  2649  		ownerRule = append(ownerRule, ownerItem)
  2650  	}
  2651  	var operatorRule []interface{}
  2652  	for _, operatorItem := range operator {
  2653  		operatorRule = append(operatorRule, operatorItem)
  2654  	}
  2655  
  2656  	logs, sub, err := _ENS.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2657  	if err != nil {
  2658  		return nil, err
  2659  	}
  2660  	return &ENSApprovalForAllIterator{contract: _ENS.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  2661  }
  2662  
  2663  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2664  //
  2665  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2666  func (_ENS *ENSFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ENSApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  2667  
  2668  	var ownerRule []interface{}
  2669  	for _, ownerItem := range owner {
  2670  		ownerRule = append(ownerRule, ownerItem)
  2671  	}
  2672  	var operatorRule []interface{}
  2673  	for _, operatorItem := range operator {
  2674  		operatorRule = append(operatorRule, operatorItem)
  2675  	}
  2676  
  2677  	logs, sub, err := _ENS.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2678  	if err != nil {
  2679  		return nil, err
  2680  	}
  2681  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2682  		defer sub.Unsubscribe()
  2683  		for {
  2684  			select {
  2685  			case log := <-logs:
  2686  				// New log arrived, parse the event and forward to the user
  2687  				event := new(ENSApprovalForAll)
  2688  				if err := _ENS.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2689  					return err
  2690  				}
  2691  				event.Raw = log
  2692  
  2693  				select {
  2694  				case sink <- event:
  2695  				case err := <-sub.Err():
  2696  					return err
  2697  				case <-quit:
  2698  					return nil
  2699  				}
  2700  			case err := <-sub.Err():
  2701  				return err
  2702  			case <-quit:
  2703  				return nil
  2704  			}
  2705  		}
  2706  	}), nil
  2707  }
  2708  
  2709  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2710  //
  2711  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2712  func (_ENS *ENSFilterer) ParseApprovalForAll(log types.Log) (*ENSApprovalForAll, error) {
  2713  	event := new(ENSApprovalForAll)
  2714  	if err := _ENS.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2715  		return nil, err
  2716  	}
  2717  	event.Raw = log
  2718  	return event, nil
  2719  }
  2720  
  2721  // ENSNewOwnerIterator is returned from FilterNewOwner and is used to iterate over the raw logs and unpacked data for NewOwner events raised by the ENS contract.
  2722  type ENSNewOwnerIterator struct {
  2723  	Event *ENSNewOwner // Event containing the contract specifics and raw log
  2724  
  2725  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2726  	event    string              // Event name to use for unpacking event data
  2727  
  2728  	logs chan types.Log        // Log channel receiving the found contract events
  2729  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2730  	done bool                  // Whether the subscription completed delivering logs
  2731  	fail error                 // Occurred error to stop iteration
  2732  }
  2733  
  2734  // Next advances the iterator to the subsequent event, returning whether there
  2735  // are any more events found. In case of a retrieval or parsing error, false is
  2736  // returned and Error() can be queried for the exact failure.
  2737  func (it *ENSNewOwnerIterator) Next() bool {
  2738  	// If the iterator failed, stop iterating
  2739  	if it.fail != nil {
  2740  		return false
  2741  	}
  2742  	// If the iterator completed, deliver directly whatever's available
  2743  	if it.done {
  2744  		select {
  2745  		case log := <-it.logs:
  2746  			it.Event = new(ENSNewOwner)
  2747  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2748  				it.fail = err
  2749  				return false
  2750  			}
  2751  			it.Event.Raw = log
  2752  			return true
  2753  
  2754  		default:
  2755  			return false
  2756  		}
  2757  	}
  2758  	// Iterator still in progress, wait for either a data or an error event
  2759  	select {
  2760  	case log := <-it.logs:
  2761  		it.Event = new(ENSNewOwner)
  2762  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2763  			it.fail = err
  2764  			return false
  2765  		}
  2766  		it.Event.Raw = log
  2767  		return true
  2768  
  2769  	case err := <-it.sub.Err():
  2770  		it.done = true
  2771  		it.fail = err
  2772  		return it.Next()
  2773  	}
  2774  }
  2775  
  2776  // Error returns any retrieval or parsing error occurred during filtering.
  2777  func (it *ENSNewOwnerIterator) Error() error {
  2778  	return it.fail
  2779  }
  2780  
  2781  // Close terminates the iteration process, releasing any pending underlying
  2782  // resources.
  2783  func (it *ENSNewOwnerIterator) Close() error {
  2784  	it.sub.Unsubscribe()
  2785  	return nil
  2786  }
  2787  
  2788  // ENSNewOwner represents a NewOwner event raised by the ENS contract.
  2789  type ENSNewOwner struct {
  2790  	Node  [32]byte
  2791  	Label [32]byte
  2792  	Owner common.Address
  2793  	Raw   types.Log // Blockchain specific contextual infos
  2794  }
  2795  
  2796  // FilterNewOwner is a free log retrieval operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  2797  //
  2798  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  2799  func (_ENS *ENSFilterer) FilterNewOwner(opts *bind.FilterOpts, node [][32]byte, label [][32]byte) (*ENSNewOwnerIterator, error) {
  2800  
  2801  	var nodeRule []interface{}
  2802  	for _, nodeItem := range node {
  2803  		nodeRule = append(nodeRule, nodeItem)
  2804  	}
  2805  	var labelRule []interface{}
  2806  	for _, labelItem := range label {
  2807  		labelRule = append(labelRule, labelItem)
  2808  	}
  2809  
  2810  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewOwner", nodeRule, labelRule)
  2811  	if err != nil {
  2812  		return nil, err
  2813  	}
  2814  	return &ENSNewOwnerIterator{contract: _ENS.contract, event: "NewOwner", logs: logs, sub: sub}, nil
  2815  }
  2816  
  2817  // WatchNewOwner is a free log subscription operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  2818  //
  2819  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  2820  func (_ENS *ENSFilterer) WatchNewOwner(opts *bind.WatchOpts, sink chan<- *ENSNewOwner, node [][32]byte, label [][32]byte) (event.Subscription, error) {
  2821  
  2822  	var nodeRule []interface{}
  2823  	for _, nodeItem := range node {
  2824  		nodeRule = append(nodeRule, nodeItem)
  2825  	}
  2826  	var labelRule []interface{}
  2827  	for _, labelItem := range label {
  2828  		labelRule = append(labelRule, labelItem)
  2829  	}
  2830  
  2831  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewOwner", nodeRule, labelRule)
  2832  	if err != nil {
  2833  		return nil, err
  2834  	}
  2835  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2836  		defer sub.Unsubscribe()
  2837  		for {
  2838  			select {
  2839  			case log := <-logs:
  2840  				// New log arrived, parse the event and forward to the user
  2841  				event := new(ENSNewOwner)
  2842  				if err := _ENS.contract.UnpackLog(event, "NewOwner", log); err != nil {
  2843  					return err
  2844  				}
  2845  				event.Raw = log
  2846  
  2847  				select {
  2848  				case sink <- event:
  2849  				case err := <-sub.Err():
  2850  					return err
  2851  				case <-quit:
  2852  					return nil
  2853  				}
  2854  			case err := <-sub.Err():
  2855  				return err
  2856  			case <-quit:
  2857  				return nil
  2858  			}
  2859  		}
  2860  	}), nil
  2861  }
  2862  
  2863  // ParseNewOwner is a log parse operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  2864  //
  2865  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  2866  func (_ENS *ENSFilterer) ParseNewOwner(log types.Log) (*ENSNewOwner, error) {
  2867  	event := new(ENSNewOwner)
  2868  	if err := _ENS.contract.UnpackLog(event, "NewOwner", log); err != nil {
  2869  		return nil, err
  2870  	}
  2871  	event.Raw = log
  2872  	return event, nil
  2873  }
  2874  
  2875  // ENSNewResolverIterator is returned from FilterNewResolver and is used to iterate over the raw logs and unpacked data for NewResolver events raised by the ENS contract.
  2876  type ENSNewResolverIterator struct {
  2877  	Event *ENSNewResolver // Event containing the contract specifics and raw log
  2878  
  2879  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2880  	event    string              // Event name to use for unpacking event data
  2881  
  2882  	logs chan types.Log        // Log channel receiving the found contract events
  2883  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2884  	done bool                  // Whether the subscription completed delivering logs
  2885  	fail error                 // Occurred error to stop iteration
  2886  }
  2887  
  2888  // Next advances the iterator to the subsequent event, returning whether there
  2889  // are any more events found. In case of a retrieval or parsing error, false is
  2890  // returned and Error() can be queried for the exact failure.
  2891  func (it *ENSNewResolverIterator) Next() bool {
  2892  	// If the iterator failed, stop iterating
  2893  	if it.fail != nil {
  2894  		return false
  2895  	}
  2896  	// If the iterator completed, deliver directly whatever's available
  2897  	if it.done {
  2898  		select {
  2899  		case log := <-it.logs:
  2900  			it.Event = new(ENSNewResolver)
  2901  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2902  				it.fail = err
  2903  				return false
  2904  			}
  2905  			it.Event.Raw = log
  2906  			return true
  2907  
  2908  		default:
  2909  			return false
  2910  		}
  2911  	}
  2912  	// Iterator still in progress, wait for either a data or an error event
  2913  	select {
  2914  	case log := <-it.logs:
  2915  		it.Event = new(ENSNewResolver)
  2916  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2917  			it.fail = err
  2918  			return false
  2919  		}
  2920  		it.Event.Raw = log
  2921  		return true
  2922  
  2923  	case err := <-it.sub.Err():
  2924  		it.done = true
  2925  		it.fail = err
  2926  		return it.Next()
  2927  	}
  2928  }
  2929  
  2930  // Error returns any retrieval or parsing error occurred during filtering.
  2931  func (it *ENSNewResolverIterator) Error() error {
  2932  	return it.fail
  2933  }
  2934  
  2935  // Close terminates the iteration process, releasing any pending underlying
  2936  // resources.
  2937  func (it *ENSNewResolverIterator) Close() error {
  2938  	it.sub.Unsubscribe()
  2939  	return nil
  2940  }
  2941  
  2942  // ENSNewResolver represents a NewResolver event raised by the ENS contract.
  2943  type ENSNewResolver struct {
  2944  	Node     [32]byte
  2945  	Resolver common.Address
  2946  	Raw      types.Log // Blockchain specific contextual infos
  2947  }
  2948  
  2949  // FilterNewResolver is a free log retrieval operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  2950  //
  2951  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  2952  func (_ENS *ENSFilterer) FilterNewResolver(opts *bind.FilterOpts, node [][32]byte) (*ENSNewResolverIterator, error) {
  2953  
  2954  	var nodeRule []interface{}
  2955  	for _, nodeItem := range node {
  2956  		nodeRule = append(nodeRule, nodeItem)
  2957  	}
  2958  
  2959  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewResolver", nodeRule)
  2960  	if err != nil {
  2961  		return nil, err
  2962  	}
  2963  	return &ENSNewResolverIterator{contract: _ENS.contract, event: "NewResolver", logs: logs, sub: sub}, nil
  2964  }
  2965  
  2966  // WatchNewResolver is a free log subscription operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  2967  //
  2968  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  2969  func (_ENS *ENSFilterer) WatchNewResolver(opts *bind.WatchOpts, sink chan<- *ENSNewResolver, node [][32]byte) (event.Subscription, error) {
  2970  
  2971  	var nodeRule []interface{}
  2972  	for _, nodeItem := range node {
  2973  		nodeRule = append(nodeRule, nodeItem)
  2974  	}
  2975  
  2976  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewResolver", nodeRule)
  2977  	if err != nil {
  2978  		return nil, err
  2979  	}
  2980  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2981  		defer sub.Unsubscribe()
  2982  		for {
  2983  			select {
  2984  			case log := <-logs:
  2985  				// New log arrived, parse the event and forward to the user
  2986  				event := new(ENSNewResolver)
  2987  				if err := _ENS.contract.UnpackLog(event, "NewResolver", log); err != nil {
  2988  					return err
  2989  				}
  2990  				event.Raw = log
  2991  
  2992  				select {
  2993  				case sink <- event:
  2994  				case err := <-sub.Err():
  2995  					return err
  2996  				case <-quit:
  2997  					return nil
  2998  				}
  2999  			case err := <-sub.Err():
  3000  				return err
  3001  			case <-quit:
  3002  				return nil
  3003  			}
  3004  		}
  3005  	}), nil
  3006  }
  3007  
  3008  // ParseNewResolver is a log parse operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  3009  //
  3010  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  3011  func (_ENS *ENSFilterer) ParseNewResolver(log types.Log) (*ENSNewResolver, error) {
  3012  	event := new(ENSNewResolver)
  3013  	if err := _ENS.contract.UnpackLog(event, "NewResolver", log); err != nil {
  3014  		return nil, err
  3015  	}
  3016  	event.Raw = log
  3017  	return event, nil
  3018  }
  3019  
  3020  // ENSNewTTLIterator is returned from FilterNewTTL and is used to iterate over the raw logs and unpacked data for NewTTL events raised by the ENS contract.
  3021  type ENSNewTTLIterator struct {
  3022  	Event *ENSNewTTL // Event containing the contract specifics and raw log
  3023  
  3024  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3025  	event    string              // Event name to use for unpacking event data
  3026  
  3027  	logs chan types.Log        // Log channel receiving the found contract events
  3028  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3029  	done bool                  // Whether the subscription completed delivering logs
  3030  	fail error                 // Occurred error to stop iteration
  3031  }
  3032  
  3033  // Next advances the iterator to the subsequent event, returning whether there
  3034  // are any more events found. In case of a retrieval or parsing error, false is
  3035  // returned and Error() can be queried for the exact failure.
  3036  func (it *ENSNewTTLIterator) Next() bool {
  3037  	// If the iterator failed, stop iterating
  3038  	if it.fail != nil {
  3039  		return false
  3040  	}
  3041  	// If the iterator completed, deliver directly whatever's available
  3042  	if it.done {
  3043  		select {
  3044  		case log := <-it.logs:
  3045  			it.Event = new(ENSNewTTL)
  3046  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3047  				it.fail = err
  3048  				return false
  3049  			}
  3050  			it.Event.Raw = log
  3051  			return true
  3052  
  3053  		default:
  3054  			return false
  3055  		}
  3056  	}
  3057  	// Iterator still in progress, wait for either a data or an error event
  3058  	select {
  3059  	case log := <-it.logs:
  3060  		it.Event = new(ENSNewTTL)
  3061  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3062  			it.fail = err
  3063  			return false
  3064  		}
  3065  		it.Event.Raw = log
  3066  		return true
  3067  
  3068  	case err := <-it.sub.Err():
  3069  		it.done = true
  3070  		it.fail = err
  3071  		return it.Next()
  3072  	}
  3073  }
  3074  
  3075  // Error returns any retrieval or parsing error occurred during filtering.
  3076  func (it *ENSNewTTLIterator) Error() error {
  3077  	return it.fail
  3078  }
  3079  
  3080  // Close terminates the iteration process, releasing any pending underlying
  3081  // resources.
  3082  func (it *ENSNewTTLIterator) Close() error {
  3083  	it.sub.Unsubscribe()
  3084  	return nil
  3085  }
  3086  
  3087  // ENSNewTTL represents a NewTTL event raised by the ENS contract.
  3088  type ENSNewTTL struct {
  3089  	Node [32]byte
  3090  	Ttl  uint64
  3091  	Raw  types.Log // Blockchain specific contextual infos
  3092  }
  3093  
  3094  // FilterNewTTL is a free log retrieval operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  3095  //
  3096  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  3097  func (_ENS *ENSFilterer) FilterNewTTL(opts *bind.FilterOpts, node [][32]byte) (*ENSNewTTLIterator, error) {
  3098  
  3099  	var nodeRule []interface{}
  3100  	for _, nodeItem := range node {
  3101  		nodeRule = append(nodeRule, nodeItem)
  3102  	}
  3103  
  3104  	logs, sub, err := _ENS.contract.FilterLogs(opts, "NewTTL", nodeRule)
  3105  	if err != nil {
  3106  		return nil, err
  3107  	}
  3108  	return &ENSNewTTLIterator{contract: _ENS.contract, event: "NewTTL", logs: logs, sub: sub}, nil
  3109  }
  3110  
  3111  // WatchNewTTL is a free log subscription operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  3112  //
  3113  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  3114  func (_ENS *ENSFilterer) WatchNewTTL(opts *bind.WatchOpts, sink chan<- *ENSNewTTL, node [][32]byte) (event.Subscription, error) {
  3115  
  3116  	var nodeRule []interface{}
  3117  	for _, nodeItem := range node {
  3118  		nodeRule = append(nodeRule, nodeItem)
  3119  	}
  3120  
  3121  	logs, sub, err := _ENS.contract.WatchLogs(opts, "NewTTL", nodeRule)
  3122  	if err != nil {
  3123  		return nil, err
  3124  	}
  3125  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3126  		defer sub.Unsubscribe()
  3127  		for {
  3128  			select {
  3129  			case log := <-logs:
  3130  				// New log arrived, parse the event and forward to the user
  3131  				event := new(ENSNewTTL)
  3132  				if err := _ENS.contract.UnpackLog(event, "NewTTL", log); err != nil {
  3133  					return err
  3134  				}
  3135  				event.Raw = log
  3136  
  3137  				select {
  3138  				case sink <- event:
  3139  				case err := <-sub.Err():
  3140  					return err
  3141  				case <-quit:
  3142  					return nil
  3143  				}
  3144  			case err := <-sub.Err():
  3145  				return err
  3146  			case <-quit:
  3147  				return nil
  3148  			}
  3149  		}
  3150  	}), nil
  3151  }
  3152  
  3153  // ParseNewTTL is a log parse operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  3154  //
  3155  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  3156  func (_ENS *ENSFilterer) ParseNewTTL(log types.Log) (*ENSNewTTL, error) {
  3157  	event := new(ENSNewTTL)
  3158  	if err := _ENS.contract.UnpackLog(event, "NewTTL", log); err != nil {
  3159  		return nil, err
  3160  	}
  3161  	event.Raw = log
  3162  	return event, nil
  3163  }
  3164  
  3165  // ENSTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ENS contract.
  3166  type ENSTransferIterator struct {
  3167  	Event *ENSTransfer // Event containing the contract specifics and raw log
  3168  
  3169  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3170  	event    string              // Event name to use for unpacking event data
  3171  
  3172  	logs chan types.Log        // Log channel receiving the found contract events
  3173  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3174  	done bool                  // Whether the subscription completed delivering logs
  3175  	fail error                 // Occurred error to stop iteration
  3176  }
  3177  
  3178  // Next advances the iterator to the subsequent event, returning whether there
  3179  // are any more events found. In case of a retrieval or parsing error, false is
  3180  // returned and Error() can be queried for the exact failure.
  3181  func (it *ENSTransferIterator) Next() bool {
  3182  	// If the iterator failed, stop iterating
  3183  	if it.fail != nil {
  3184  		return false
  3185  	}
  3186  	// If the iterator completed, deliver directly whatever's available
  3187  	if it.done {
  3188  		select {
  3189  		case log := <-it.logs:
  3190  			it.Event = new(ENSTransfer)
  3191  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3192  				it.fail = err
  3193  				return false
  3194  			}
  3195  			it.Event.Raw = log
  3196  			return true
  3197  
  3198  		default:
  3199  			return false
  3200  		}
  3201  	}
  3202  	// Iterator still in progress, wait for either a data or an error event
  3203  	select {
  3204  	case log := <-it.logs:
  3205  		it.Event = new(ENSTransfer)
  3206  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3207  			it.fail = err
  3208  			return false
  3209  		}
  3210  		it.Event.Raw = log
  3211  		return true
  3212  
  3213  	case err := <-it.sub.Err():
  3214  		it.done = true
  3215  		it.fail = err
  3216  		return it.Next()
  3217  	}
  3218  }
  3219  
  3220  // Error returns any retrieval or parsing error occurred during filtering.
  3221  func (it *ENSTransferIterator) Error() error {
  3222  	return it.fail
  3223  }
  3224  
  3225  // Close terminates the iteration process, releasing any pending underlying
  3226  // resources.
  3227  func (it *ENSTransferIterator) Close() error {
  3228  	it.sub.Unsubscribe()
  3229  	return nil
  3230  }
  3231  
  3232  // ENSTransfer represents a Transfer event raised by the ENS contract.
  3233  type ENSTransfer struct {
  3234  	Node  [32]byte
  3235  	Owner common.Address
  3236  	Raw   types.Log // Blockchain specific contextual infos
  3237  }
  3238  
  3239  // FilterTransfer is a free log retrieval operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  3240  //
  3241  // Solidity: event Transfer(bytes32 indexed node, address owner)
  3242  func (_ENS *ENSFilterer) FilterTransfer(opts *bind.FilterOpts, node [][32]byte) (*ENSTransferIterator, error) {
  3243  
  3244  	var nodeRule []interface{}
  3245  	for _, nodeItem := range node {
  3246  		nodeRule = append(nodeRule, nodeItem)
  3247  	}
  3248  
  3249  	logs, sub, err := _ENS.contract.FilterLogs(opts, "Transfer", nodeRule)
  3250  	if err != nil {
  3251  		return nil, err
  3252  	}
  3253  	return &ENSTransferIterator{contract: _ENS.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3254  }
  3255  
  3256  // WatchTransfer is a free log subscription operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  3257  //
  3258  // Solidity: event Transfer(bytes32 indexed node, address owner)
  3259  func (_ENS *ENSFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ENSTransfer, node [][32]byte) (event.Subscription, error) {
  3260  
  3261  	var nodeRule []interface{}
  3262  	for _, nodeItem := range node {
  3263  		nodeRule = append(nodeRule, nodeItem)
  3264  	}
  3265  
  3266  	logs, sub, err := _ENS.contract.WatchLogs(opts, "Transfer", nodeRule)
  3267  	if err != nil {
  3268  		return nil, err
  3269  	}
  3270  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3271  		defer sub.Unsubscribe()
  3272  		for {
  3273  			select {
  3274  			case log := <-logs:
  3275  				// New log arrived, parse the event and forward to the user
  3276  				event := new(ENSTransfer)
  3277  				if err := _ENS.contract.UnpackLog(event, "Transfer", log); err != nil {
  3278  					return err
  3279  				}
  3280  				event.Raw = log
  3281  
  3282  				select {
  3283  				case sink <- event:
  3284  				case err := <-sub.Err():
  3285  					return err
  3286  				case <-quit:
  3287  					return nil
  3288  				}
  3289  			case err := <-sub.Err():
  3290  				return err
  3291  			case <-quit:
  3292  				return nil
  3293  			}
  3294  		}
  3295  	}), nil
  3296  }
  3297  
  3298  // ParseTransfer is a log parse operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  3299  //
  3300  // Solidity: event Transfer(bytes32 indexed node, address owner)
  3301  func (_ENS *ENSFilterer) ParseTransfer(log types.Log) (*ENSTransfer, error) {
  3302  	event := new(ENSTransfer)
  3303  	if err := _ENS.contract.UnpackLog(event, "Transfer", log); err != nil {
  3304  		return nil, err
  3305  	}
  3306  	event.Raw = log
  3307  	return event, nil
  3308  }
  3309  
  3310  // ENSRegistryABI is the input ABI used to generate the binding from.
  3311  const ENSRegistryABI = "[{\"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\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"label\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  3312  
  3313  // ENSRegistryFuncSigs maps the 4-byte function signature to its string representation.
  3314  var ENSRegistryFuncSigs = map[string]string{
  3315  	"e985e9c5": "isApprovedForAll(address,address)",
  3316  	"02571be3": "owner(bytes32)",
  3317  	"f79fe538": "recordExists(bytes32)",
  3318  	"0178b8bf": "resolver(bytes32)",
  3319  	"a22cb465": "setApprovalForAll(address,bool)",
  3320  	"5b0fc9c3": "setOwner(bytes32,address)",
  3321  	"cf408823": "setRecord(bytes32,address,address,uint64)",
  3322  	"1896f70a": "setResolver(bytes32,address)",
  3323  	"06ab5923": "setSubnodeOwner(bytes32,bytes32,address)",
  3324  	"5ef2c7f0": "setSubnodeRecord(bytes32,bytes32,address,address,uint64)",
  3325  	"14ab9038": "setTTL(bytes32,uint64)",
  3326  	"16a25cbd": "ttl(bytes32)",
  3327  }
  3328  
  3329  // ENSRegistry is an auto generated Go binding around an Ethereum contract.
  3330  type ENSRegistry struct {
  3331  	ENSRegistryCaller     // Read-only binding to the contract
  3332  	ENSRegistryTransactor // Write-only binding to the contract
  3333  	ENSRegistryFilterer   // Log filterer for contract events
  3334  }
  3335  
  3336  // ENSRegistryCaller is an auto generated read-only Go binding around an Ethereum contract.
  3337  type ENSRegistryCaller struct {
  3338  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3339  }
  3340  
  3341  // ENSRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract.
  3342  type ENSRegistryTransactor struct {
  3343  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3344  }
  3345  
  3346  // ENSRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  3347  type ENSRegistryFilterer struct {
  3348  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3349  }
  3350  
  3351  // ENSRegistrySession is an auto generated Go binding around an Ethereum contract,
  3352  // with pre-set call and transact options.
  3353  type ENSRegistrySession struct {
  3354  	Contract     *ENSRegistry      // Generic contract binding to set the session for
  3355  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3356  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3357  }
  3358  
  3359  // ENSRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  3360  // with pre-set call options.
  3361  type ENSRegistryCallerSession struct {
  3362  	Contract *ENSRegistryCaller // Generic contract caller binding to set the session for
  3363  	CallOpts bind.CallOpts      // Call options to use throughout this session
  3364  }
  3365  
  3366  // ENSRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  3367  // with pre-set transact options.
  3368  type ENSRegistryTransactorSession struct {
  3369  	Contract     *ENSRegistryTransactor // Generic contract transactor binding to set the session for
  3370  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  3371  }
  3372  
  3373  // ENSRegistryRaw is an auto generated low-level Go binding around an Ethereum contract.
  3374  type ENSRegistryRaw struct {
  3375  	Contract *ENSRegistry // Generic contract binding to access the raw methods on
  3376  }
  3377  
  3378  // ENSRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  3379  type ENSRegistryCallerRaw struct {
  3380  	Contract *ENSRegistryCaller // Generic read-only contract binding to access the raw methods on
  3381  }
  3382  
  3383  // ENSRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  3384  type ENSRegistryTransactorRaw struct {
  3385  	Contract *ENSRegistryTransactor // Generic write-only contract binding to access the raw methods on
  3386  }
  3387  
  3388  // NewENSRegistry creates a new instance of ENSRegistry, bound to a specific deployed contract.
  3389  func NewENSRegistry(address common.Address, backend bind.ContractBackend) (*ENSRegistry, error) {
  3390  	contract, err := bindENSRegistry(address, backend, backend, backend)
  3391  	if err != nil {
  3392  		return nil, err
  3393  	}
  3394  	return &ENSRegistry{ENSRegistryCaller: ENSRegistryCaller{contract: contract}, ENSRegistryTransactor: ENSRegistryTransactor{contract: contract}, ENSRegistryFilterer: ENSRegistryFilterer{contract: contract}}, nil
  3395  }
  3396  
  3397  // NewENSRegistryCaller creates a new read-only instance of ENSRegistry, bound to a specific deployed contract.
  3398  func NewENSRegistryCaller(address common.Address, caller bind.ContractCaller) (*ENSRegistryCaller, error) {
  3399  	contract, err := bindENSRegistry(address, caller, nil, nil)
  3400  	if err != nil {
  3401  		return nil, err
  3402  	}
  3403  	return &ENSRegistryCaller{contract: contract}, nil
  3404  }
  3405  
  3406  // NewENSRegistryTransactor creates a new write-only instance of ENSRegistry, bound to a specific deployed contract.
  3407  func NewENSRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ENSRegistryTransactor, error) {
  3408  	contract, err := bindENSRegistry(address, nil, transactor, nil)
  3409  	if err != nil {
  3410  		return nil, err
  3411  	}
  3412  	return &ENSRegistryTransactor{contract: contract}, nil
  3413  }
  3414  
  3415  // NewENSRegistryFilterer creates a new log filterer instance of ENSRegistry, bound to a specific deployed contract.
  3416  func NewENSRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ENSRegistryFilterer, error) {
  3417  	contract, err := bindENSRegistry(address, nil, nil, filterer)
  3418  	if err != nil {
  3419  		return nil, err
  3420  	}
  3421  	return &ENSRegistryFilterer{contract: contract}, nil
  3422  }
  3423  
  3424  // bindENSRegistry binds a generic wrapper to an already deployed contract.
  3425  func bindENSRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3426  	parsed, err := abi.JSON(strings.NewReader(ENSRegistryABI))
  3427  	if err != nil {
  3428  		return nil, err
  3429  	}
  3430  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3431  }
  3432  
  3433  // Call invokes the (constant) contract method with params as input values and
  3434  // sets the output to result. The result type might be a single field for simple
  3435  // returns, a slice of interfaces for anonymous returns and a struct for named
  3436  // returns.
  3437  func (_ENSRegistry *ENSRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3438  	return _ENSRegistry.Contract.ENSRegistryCaller.contract.Call(opts, result, method, params...)
  3439  }
  3440  
  3441  // Transfer initiates a plain transaction to move funds to the contract, calling
  3442  // its default method if one is available.
  3443  func (_ENSRegistry *ENSRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3444  	return _ENSRegistry.Contract.ENSRegistryTransactor.contract.Transfer(opts)
  3445  }
  3446  
  3447  // Transact invokes the (paid) contract method with params as input values.
  3448  func (_ENSRegistry *ENSRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3449  	return _ENSRegistry.Contract.ENSRegistryTransactor.contract.Transact(opts, method, params...)
  3450  }
  3451  
  3452  // Call invokes the (constant) contract method with params as input values and
  3453  // sets the output to result. The result type might be a single field for simple
  3454  // returns, a slice of interfaces for anonymous returns and a struct for named
  3455  // returns.
  3456  func (_ENSRegistry *ENSRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3457  	return _ENSRegistry.Contract.contract.Call(opts, result, method, params...)
  3458  }
  3459  
  3460  // Transfer initiates a plain transaction to move funds to the contract, calling
  3461  // its default method if one is available.
  3462  func (_ENSRegistry *ENSRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3463  	return _ENSRegistry.Contract.contract.Transfer(opts)
  3464  }
  3465  
  3466  // Transact invokes the (paid) contract method with params as input values.
  3467  func (_ENSRegistry *ENSRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3468  	return _ENSRegistry.Contract.contract.Transact(opts, method, params...)
  3469  }
  3470  
  3471  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3472  //
  3473  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3474  func (_ENSRegistry *ENSRegistryCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3475  	var out []interface{}
  3476  	err := _ENSRegistry.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  3477  
  3478  	if err != nil {
  3479  		return *new(bool), err
  3480  	}
  3481  
  3482  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3483  
  3484  	return out0, err
  3485  
  3486  }
  3487  
  3488  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3489  //
  3490  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3491  func (_ENSRegistry *ENSRegistrySession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3492  	return _ENSRegistry.Contract.IsApprovedForAll(&_ENSRegistry.CallOpts, owner, operator)
  3493  }
  3494  
  3495  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3496  //
  3497  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3498  func (_ENSRegistry *ENSRegistryCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3499  	return _ENSRegistry.Contract.IsApprovedForAll(&_ENSRegistry.CallOpts, owner, operator)
  3500  }
  3501  
  3502  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  3503  //
  3504  // Solidity: function owner(bytes32 node) view returns(address)
  3505  func (_ENSRegistry *ENSRegistryCaller) Owner(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  3506  	var out []interface{}
  3507  	err := _ENSRegistry.contract.Call(opts, &out, "owner", node)
  3508  
  3509  	if err != nil {
  3510  		return *new(common.Address), err
  3511  	}
  3512  
  3513  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3514  
  3515  	return out0, err
  3516  
  3517  }
  3518  
  3519  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  3520  //
  3521  // Solidity: function owner(bytes32 node) view returns(address)
  3522  func (_ENSRegistry *ENSRegistrySession) Owner(node [32]byte) (common.Address, error) {
  3523  	return _ENSRegistry.Contract.Owner(&_ENSRegistry.CallOpts, node)
  3524  }
  3525  
  3526  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  3527  //
  3528  // Solidity: function owner(bytes32 node) view returns(address)
  3529  func (_ENSRegistry *ENSRegistryCallerSession) Owner(node [32]byte) (common.Address, error) {
  3530  	return _ENSRegistry.Contract.Owner(&_ENSRegistry.CallOpts, node)
  3531  }
  3532  
  3533  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  3534  //
  3535  // Solidity: function recordExists(bytes32 node) view returns(bool)
  3536  func (_ENSRegistry *ENSRegistryCaller) RecordExists(opts *bind.CallOpts, node [32]byte) (bool, error) {
  3537  	var out []interface{}
  3538  	err := _ENSRegistry.contract.Call(opts, &out, "recordExists", node)
  3539  
  3540  	if err != nil {
  3541  		return *new(bool), err
  3542  	}
  3543  
  3544  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3545  
  3546  	return out0, err
  3547  
  3548  }
  3549  
  3550  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  3551  //
  3552  // Solidity: function recordExists(bytes32 node) view returns(bool)
  3553  func (_ENSRegistry *ENSRegistrySession) RecordExists(node [32]byte) (bool, error) {
  3554  	return _ENSRegistry.Contract.RecordExists(&_ENSRegistry.CallOpts, node)
  3555  }
  3556  
  3557  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  3558  //
  3559  // Solidity: function recordExists(bytes32 node) view returns(bool)
  3560  func (_ENSRegistry *ENSRegistryCallerSession) RecordExists(node [32]byte) (bool, error) {
  3561  	return _ENSRegistry.Contract.RecordExists(&_ENSRegistry.CallOpts, node)
  3562  }
  3563  
  3564  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  3565  //
  3566  // Solidity: function resolver(bytes32 node) view returns(address)
  3567  func (_ENSRegistry *ENSRegistryCaller) Resolver(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  3568  	var out []interface{}
  3569  	err := _ENSRegistry.contract.Call(opts, &out, "resolver", node)
  3570  
  3571  	if err != nil {
  3572  		return *new(common.Address), err
  3573  	}
  3574  
  3575  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3576  
  3577  	return out0, err
  3578  
  3579  }
  3580  
  3581  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  3582  //
  3583  // Solidity: function resolver(bytes32 node) view returns(address)
  3584  func (_ENSRegistry *ENSRegistrySession) Resolver(node [32]byte) (common.Address, error) {
  3585  	return _ENSRegistry.Contract.Resolver(&_ENSRegistry.CallOpts, node)
  3586  }
  3587  
  3588  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  3589  //
  3590  // Solidity: function resolver(bytes32 node) view returns(address)
  3591  func (_ENSRegistry *ENSRegistryCallerSession) Resolver(node [32]byte) (common.Address, error) {
  3592  	return _ENSRegistry.Contract.Resolver(&_ENSRegistry.CallOpts, node)
  3593  }
  3594  
  3595  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  3596  //
  3597  // Solidity: function ttl(bytes32 node) view returns(uint64)
  3598  func (_ENSRegistry *ENSRegistryCaller) Ttl(opts *bind.CallOpts, node [32]byte) (uint64, error) {
  3599  	var out []interface{}
  3600  	err := _ENSRegistry.contract.Call(opts, &out, "ttl", node)
  3601  
  3602  	if err != nil {
  3603  		return *new(uint64), err
  3604  	}
  3605  
  3606  	out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
  3607  
  3608  	return out0, err
  3609  
  3610  }
  3611  
  3612  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  3613  //
  3614  // Solidity: function ttl(bytes32 node) view returns(uint64)
  3615  func (_ENSRegistry *ENSRegistrySession) Ttl(node [32]byte) (uint64, error) {
  3616  	return _ENSRegistry.Contract.Ttl(&_ENSRegistry.CallOpts, node)
  3617  }
  3618  
  3619  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  3620  //
  3621  // Solidity: function ttl(bytes32 node) view returns(uint64)
  3622  func (_ENSRegistry *ENSRegistryCallerSession) Ttl(node [32]byte) (uint64, error) {
  3623  	return _ENSRegistry.Contract.Ttl(&_ENSRegistry.CallOpts, node)
  3624  }
  3625  
  3626  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3627  //
  3628  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  3629  func (_ENSRegistry *ENSRegistryTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) {
  3630  	return _ENSRegistry.contract.Transact(opts, "setApprovalForAll", operator, approved)
  3631  }
  3632  
  3633  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3634  //
  3635  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  3636  func (_ENSRegistry *ENSRegistrySession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  3637  	return _ENSRegistry.Contract.SetApprovalForAll(&_ENSRegistry.TransactOpts, operator, approved)
  3638  }
  3639  
  3640  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3641  //
  3642  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  3643  func (_ENSRegistry *ENSRegistryTransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  3644  	return _ENSRegistry.Contract.SetApprovalForAll(&_ENSRegistry.TransactOpts, operator, approved)
  3645  }
  3646  
  3647  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  3648  //
  3649  // Solidity: function setOwner(bytes32 node, address owner) returns()
  3650  func (_ENSRegistry *ENSRegistryTransactor) SetOwner(opts *bind.TransactOpts, node [32]byte, owner common.Address) (*types.Transaction, error) {
  3651  	return _ENSRegistry.contract.Transact(opts, "setOwner", node, owner)
  3652  }
  3653  
  3654  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  3655  //
  3656  // Solidity: function setOwner(bytes32 node, address owner) returns()
  3657  func (_ENSRegistry *ENSRegistrySession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  3658  	return _ENSRegistry.Contract.SetOwner(&_ENSRegistry.TransactOpts, node, owner)
  3659  }
  3660  
  3661  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  3662  //
  3663  // Solidity: function setOwner(bytes32 node, address owner) returns()
  3664  func (_ENSRegistry *ENSRegistryTransactorSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  3665  	return _ENSRegistry.Contract.SetOwner(&_ENSRegistry.TransactOpts, node, owner)
  3666  }
  3667  
  3668  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  3669  //
  3670  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  3671  func (_ENSRegistry *ENSRegistryTransactor) SetRecord(opts *bind.TransactOpts, node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3672  	return _ENSRegistry.contract.Transact(opts, "setRecord", node, owner, resolver, ttl)
  3673  }
  3674  
  3675  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  3676  //
  3677  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  3678  func (_ENSRegistry *ENSRegistrySession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3679  	return _ENSRegistry.Contract.SetRecord(&_ENSRegistry.TransactOpts, node, owner, resolver, ttl)
  3680  }
  3681  
  3682  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  3683  //
  3684  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  3685  func (_ENSRegistry *ENSRegistryTransactorSession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3686  	return _ENSRegistry.Contract.SetRecord(&_ENSRegistry.TransactOpts, node, owner, resolver, ttl)
  3687  }
  3688  
  3689  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  3690  //
  3691  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  3692  func (_ENSRegistry *ENSRegistryTransactor) SetResolver(opts *bind.TransactOpts, node [32]byte, resolver common.Address) (*types.Transaction, error) {
  3693  	return _ENSRegistry.contract.Transact(opts, "setResolver", node, resolver)
  3694  }
  3695  
  3696  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  3697  //
  3698  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  3699  func (_ENSRegistry *ENSRegistrySession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  3700  	return _ENSRegistry.Contract.SetResolver(&_ENSRegistry.TransactOpts, node, resolver)
  3701  }
  3702  
  3703  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  3704  //
  3705  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  3706  func (_ENSRegistry *ENSRegistryTransactorSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  3707  	return _ENSRegistry.Contract.SetResolver(&_ENSRegistry.TransactOpts, node, resolver)
  3708  }
  3709  
  3710  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  3711  //
  3712  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  3713  func (_ENSRegistry *ENSRegistryTransactor) SetSubnodeOwner(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  3714  	return _ENSRegistry.contract.Transact(opts, "setSubnodeOwner", node, label, owner)
  3715  }
  3716  
  3717  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  3718  //
  3719  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  3720  func (_ENSRegistry *ENSRegistrySession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  3721  	return _ENSRegistry.Contract.SetSubnodeOwner(&_ENSRegistry.TransactOpts, node, label, owner)
  3722  }
  3723  
  3724  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  3725  //
  3726  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  3727  func (_ENSRegistry *ENSRegistryTransactorSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  3728  	return _ENSRegistry.Contract.SetSubnodeOwner(&_ENSRegistry.TransactOpts, node, label, owner)
  3729  }
  3730  
  3731  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  3732  //
  3733  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  3734  func (_ENSRegistry *ENSRegistryTransactor) SetSubnodeRecord(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3735  	return _ENSRegistry.contract.Transact(opts, "setSubnodeRecord", node, label, owner, resolver, ttl)
  3736  }
  3737  
  3738  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  3739  //
  3740  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  3741  func (_ENSRegistry *ENSRegistrySession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3742  	return _ENSRegistry.Contract.SetSubnodeRecord(&_ENSRegistry.TransactOpts, node, label, owner, resolver, ttl)
  3743  }
  3744  
  3745  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  3746  //
  3747  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  3748  func (_ENSRegistry *ENSRegistryTransactorSession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  3749  	return _ENSRegistry.Contract.SetSubnodeRecord(&_ENSRegistry.TransactOpts, node, label, owner, resolver, ttl)
  3750  }
  3751  
  3752  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  3753  //
  3754  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  3755  func (_ENSRegistry *ENSRegistryTransactor) SetTTL(opts *bind.TransactOpts, node [32]byte, ttl uint64) (*types.Transaction, error) {
  3756  	return _ENSRegistry.contract.Transact(opts, "setTTL", node, ttl)
  3757  }
  3758  
  3759  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  3760  //
  3761  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  3762  func (_ENSRegistry *ENSRegistrySession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  3763  	return _ENSRegistry.Contract.SetTTL(&_ENSRegistry.TransactOpts, node, ttl)
  3764  }
  3765  
  3766  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  3767  //
  3768  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  3769  func (_ENSRegistry *ENSRegistryTransactorSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  3770  	return _ENSRegistry.Contract.SetTTL(&_ENSRegistry.TransactOpts, node, ttl)
  3771  }
  3772  
  3773  // ENSRegistryApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ENSRegistry contract.
  3774  type ENSRegistryApprovalForAllIterator struct {
  3775  	Event *ENSRegistryApprovalForAll // Event containing the contract specifics and raw log
  3776  
  3777  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3778  	event    string              // Event name to use for unpacking event data
  3779  
  3780  	logs chan types.Log        // Log channel receiving the found contract events
  3781  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3782  	done bool                  // Whether the subscription completed delivering logs
  3783  	fail error                 // Occurred error to stop iteration
  3784  }
  3785  
  3786  // Next advances the iterator to the subsequent event, returning whether there
  3787  // are any more events found. In case of a retrieval or parsing error, false is
  3788  // returned and Error() can be queried for the exact failure.
  3789  func (it *ENSRegistryApprovalForAllIterator) Next() bool {
  3790  	// If the iterator failed, stop iterating
  3791  	if it.fail != nil {
  3792  		return false
  3793  	}
  3794  	// If the iterator completed, deliver directly whatever's available
  3795  	if it.done {
  3796  		select {
  3797  		case log := <-it.logs:
  3798  			it.Event = new(ENSRegistryApprovalForAll)
  3799  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3800  				it.fail = err
  3801  				return false
  3802  			}
  3803  			it.Event.Raw = log
  3804  			return true
  3805  
  3806  		default:
  3807  			return false
  3808  		}
  3809  	}
  3810  	// Iterator still in progress, wait for either a data or an error event
  3811  	select {
  3812  	case log := <-it.logs:
  3813  		it.Event = new(ENSRegistryApprovalForAll)
  3814  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3815  			it.fail = err
  3816  			return false
  3817  		}
  3818  		it.Event.Raw = log
  3819  		return true
  3820  
  3821  	case err := <-it.sub.Err():
  3822  		it.done = true
  3823  		it.fail = err
  3824  		return it.Next()
  3825  	}
  3826  }
  3827  
  3828  // Error returns any retrieval or parsing error occurred during filtering.
  3829  func (it *ENSRegistryApprovalForAllIterator) Error() error {
  3830  	return it.fail
  3831  }
  3832  
  3833  // Close terminates the iteration process, releasing any pending underlying
  3834  // resources.
  3835  func (it *ENSRegistryApprovalForAllIterator) Close() error {
  3836  	it.sub.Unsubscribe()
  3837  	return nil
  3838  }
  3839  
  3840  // ENSRegistryApprovalForAll represents a ApprovalForAll event raised by the ENSRegistry contract.
  3841  type ENSRegistryApprovalForAll struct {
  3842  	Owner    common.Address
  3843  	Operator common.Address
  3844  	Approved bool
  3845  	Raw      types.Log // Blockchain specific contextual infos
  3846  }
  3847  
  3848  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3849  //
  3850  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3851  func (_ENSRegistry *ENSRegistryFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ENSRegistryApprovalForAllIterator, error) {
  3852  
  3853  	var ownerRule []interface{}
  3854  	for _, ownerItem := range owner {
  3855  		ownerRule = append(ownerRule, ownerItem)
  3856  	}
  3857  	var operatorRule []interface{}
  3858  	for _, operatorItem := range operator {
  3859  		operatorRule = append(operatorRule, operatorItem)
  3860  	}
  3861  
  3862  	logs, sub, err := _ENSRegistry.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3863  	if err != nil {
  3864  		return nil, err
  3865  	}
  3866  	return &ENSRegistryApprovalForAllIterator{contract: _ENSRegistry.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  3867  }
  3868  
  3869  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3870  //
  3871  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3872  func (_ENSRegistry *ENSRegistryFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ENSRegistryApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  3873  
  3874  	var ownerRule []interface{}
  3875  	for _, ownerItem := range owner {
  3876  		ownerRule = append(ownerRule, ownerItem)
  3877  	}
  3878  	var operatorRule []interface{}
  3879  	for _, operatorItem := range operator {
  3880  		operatorRule = append(operatorRule, operatorItem)
  3881  	}
  3882  
  3883  	logs, sub, err := _ENSRegistry.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3884  	if err != nil {
  3885  		return nil, err
  3886  	}
  3887  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3888  		defer sub.Unsubscribe()
  3889  		for {
  3890  			select {
  3891  			case log := <-logs:
  3892  				// New log arrived, parse the event and forward to the user
  3893  				event := new(ENSRegistryApprovalForAll)
  3894  				if err := _ENSRegistry.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3895  					return err
  3896  				}
  3897  				event.Raw = log
  3898  
  3899  				select {
  3900  				case sink <- event:
  3901  				case err := <-sub.Err():
  3902  					return err
  3903  				case <-quit:
  3904  					return nil
  3905  				}
  3906  			case err := <-sub.Err():
  3907  				return err
  3908  			case <-quit:
  3909  				return nil
  3910  			}
  3911  		}
  3912  	}), nil
  3913  }
  3914  
  3915  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3916  //
  3917  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3918  func (_ENSRegistry *ENSRegistryFilterer) ParseApprovalForAll(log types.Log) (*ENSRegistryApprovalForAll, error) {
  3919  	event := new(ENSRegistryApprovalForAll)
  3920  	if err := _ENSRegistry.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3921  		return nil, err
  3922  	}
  3923  	event.Raw = log
  3924  	return event, nil
  3925  }
  3926  
  3927  // ENSRegistryNewOwnerIterator is returned from FilterNewOwner and is used to iterate over the raw logs and unpacked data for NewOwner events raised by the ENSRegistry contract.
  3928  type ENSRegistryNewOwnerIterator struct {
  3929  	Event *ENSRegistryNewOwner // Event containing the contract specifics and raw log
  3930  
  3931  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3932  	event    string              // Event name to use for unpacking event data
  3933  
  3934  	logs chan types.Log        // Log channel receiving the found contract events
  3935  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3936  	done bool                  // Whether the subscription completed delivering logs
  3937  	fail error                 // Occurred error to stop iteration
  3938  }
  3939  
  3940  // Next advances the iterator to the subsequent event, returning whether there
  3941  // are any more events found. In case of a retrieval or parsing error, false is
  3942  // returned and Error() can be queried for the exact failure.
  3943  func (it *ENSRegistryNewOwnerIterator) Next() bool {
  3944  	// If the iterator failed, stop iterating
  3945  	if it.fail != nil {
  3946  		return false
  3947  	}
  3948  	// If the iterator completed, deliver directly whatever's available
  3949  	if it.done {
  3950  		select {
  3951  		case log := <-it.logs:
  3952  			it.Event = new(ENSRegistryNewOwner)
  3953  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3954  				it.fail = err
  3955  				return false
  3956  			}
  3957  			it.Event.Raw = log
  3958  			return true
  3959  
  3960  		default:
  3961  			return false
  3962  		}
  3963  	}
  3964  	// Iterator still in progress, wait for either a data or an error event
  3965  	select {
  3966  	case log := <-it.logs:
  3967  		it.Event = new(ENSRegistryNewOwner)
  3968  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3969  			it.fail = err
  3970  			return false
  3971  		}
  3972  		it.Event.Raw = log
  3973  		return true
  3974  
  3975  	case err := <-it.sub.Err():
  3976  		it.done = true
  3977  		it.fail = err
  3978  		return it.Next()
  3979  	}
  3980  }
  3981  
  3982  // Error returns any retrieval or parsing error occurred during filtering.
  3983  func (it *ENSRegistryNewOwnerIterator) Error() error {
  3984  	return it.fail
  3985  }
  3986  
  3987  // Close terminates the iteration process, releasing any pending underlying
  3988  // resources.
  3989  func (it *ENSRegistryNewOwnerIterator) Close() error {
  3990  	it.sub.Unsubscribe()
  3991  	return nil
  3992  }
  3993  
  3994  // ENSRegistryNewOwner represents a NewOwner event raised by the ENSRegistry contract.
  3995  type ENSRegistryNewOwner struct {
  3996  	Node  [32]byte
  3997  	Label [32]byte
  3998  	Owner common.Address
  3999  	Raw   types.Log // Blockchain specific contextual infos
  4000  }
  4001  
  4002  // FilterNewOwner is a free log retrieval operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  4003  //
  4004  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  4005  func (_ENSRegistry *ENSRegistryFilterer) FilterNewOwner(opts *bind.FilterOpts, node [][32]byte, label [][32]byte) (*ENSRegistryNewOwnerIterator, error) {
  4006  
  4007  	var nodeRule []interface{}
  4008  	for _, nodeItem := range node {
  4009  		nodeRule = append(nodeRule, nodeItem)
  4010  	}
  4011  	var labelRule []interface{}
  4012  	for _, labelItem := range label {
  4013  		labelRule = append(labelRule, labelItem)
  4014  	}
  4015  
  4016  	logs, sub, err := _ENSRegistry.contract.FilterLogs(opts, "NewOwner", nodeRule, labelRule)
  4017  	if err != nil {
  4018  		return nil, err
  4019  	}
  4020  	return &ENSRegistryNewOwnerIterator{contract: _ENSRegistry.contract, event: "NewOwner", logs: logs, sub: sub}, nil
  4021  }
  4022  
  4023  // WatchNewOwner is a free log subscription operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  4024  //
  4025  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  4026  func (_ENSRegistry *ENSRegistryFilterer) WatchNewOwner(opts *bind.WatchOpts, sink chan<- *ENSRegistryNewOwner, node [][32]byte, label [][32]byte) (event.Subscription, error) {
  4027  
  4028  	var nodeRule []interface{}
  4029  	for _, nodeItem := range node {
  4030  		nodeRule = append(nodeRule, nodeItem)
  4031  	}
  4032  	var labelRule []interface{}
  4033  	for _, labelItem := range label {
  4034  		labelRule = append(labelRule, labelItem)
  4035  	}
  4036  
  4037  	logs, sub, err := _ENSRegistry.contract.WatchLogs(opts, "NewOwner", nodeRule, labelRule)
  4038  	if err != nil {
  4039  		return nil, err
  4040  	}
  4041  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4042  		defer sub.Unsubscribe()
  4043  		for {
  4044  			select {
  4045  			case log := <-logs:
  4046  				// New log arrived, parse the event and forward to the user
  4047  				event := new(ENSRegistryNewOwner)
  4048  				if err := _ENSRegistry.contract.UnpackLog(event, "NewOwner", log); err != nil {
  4049  					return err
  4050  				}
  4051  				event.Raw = log
  4052  
  4053  				select {
  4054  				case sink <- event:
  4055  				case err := <-sub.Err():
  4056  					return err
  4057  				case <-quit:
  4058  					return nil
  4059  				}
  4060  			case err := <-sub.Err():
  4061  				return err
  4062  			case <-quit:
  4063  				return nil
  4064  			}
  4065  		}
  4066  	}), nil
  4067  }
  4068  
  4069  // ParseNewOwner is a log parse operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  4070  //
  4071  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  4072  func (_ENSRegistry *ENSRegistryFilterer) ParseNewOwner(log types.Log) (*ENSRegistryNewOwner, error) {
  4073  	event := new(ENSRegistryNewOwner)
  4074  	if err := _ENSRegistry.contract.UnpackLog(event, "NewOwner", log); err != nil {
  4075  		return nil, err
  4076  	}
  4077  	event.Raw = log
  4078  	return event, nil
  4079  }
  4080  
  4081  // ENSRegistryNewResolverIterator is returned from FilterNewResolver and is used to iterate over the raw logs and unpacked data for NewResolver events raised by the ENSRegistry contract.
  4082  type ENSRegistryNewResolverIterator struct {
  4083  	Event *ENSRegistryNewResolver // Event containing the contract specifics and raw log
  4084  
  4085  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4086  	event    string              // Event name to use for unpacking event data
  4087  
  4088  	logs chan types.Log        // Log channel receiving the found contract events
  4089  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4090  	done bool                  // Whether the subscription completed delivering logs
  4091  	fail error                 // Occurred error to stop iteration
  4092  }
  4093  
  4094  // Next advances the iterator to the subsequent event, returning whether there
  4095  // are any more events found. In case of a retrieval or parsing error, false is
  4096  // returned and Error() can be queried for the exact failure.
  4097  func (it *ENSRegistryNewResolverIterator) Next() bool {
  4098  	// If the iterator failed, stop iterating
  4099  	if it.fail != nil {
  4100  		return false
  4101  	}
  4102  	// If the iterator completed, deliver directly whatever's available
  4103  	if it.done {
  4104  		select {
  4105  		case log := <-it.logs:
  4106  			it.Event = new(ENSRegistryNewResolver)
  4107  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4108  				it.fail = err
  4109  				return false
  4110  			}
  4111  			it.Event.Raw = log
  4112  			return true
  4113  
  4114  		default:
  4115  			return false
  4116  		}
  4117  	}
  4118  	// Iterator still in progress, wait for either a data or an error event
  4119  	select {
  4120  	case log := <-it.logs:
  4121  		it.Event = new(ENSRegistryNewResolver)
  4122  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4123  			it.fail = err
  4124  			return false
  4125  		}
  4126  		it.Event.Raw = log
  4127  		return true
  4128  
  4129  	case err := <-it.sub.Err():
  4130  		it.done = true
  4131  		it.fail = err
  4132  		return it.Next()
  4133  	}
  4134  }
  4135  
  4136  // Error returns any retrieval or parsing error occurred during filtering.
  4137  func (it *ENSRegistryNewResolverIterator) Error() error {
  4138  	return it.fail
  4139  }
  4140  
  4141  // Close terminates the iteration process, releasing any pending underlying
  4142  // resources.
  4143  func (it *ENSRegistryNewResolverIterator) Close() error {
  4144  	it.sub.Unsubscribe()
  4145  	return nil
  4146  }
  4147  
  4148  // ENSRegistryNewResolver represents a NewResolver event raised by the ENSRegistry contract.
  4149  type ENSRegistryNewResolver struct {
  4150  	Node     [32]byte
  4151  	Resolver common.Address
  4152  	Raw      types.Log // Blockchain specific contextual infos
  4153  }
  4154  
  4155  // FilterNewResolver is a free log retrieval operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  4156  //
  4157  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  4158  func (_ENSRegistry *ENSRegistryFilterer) FilterNewResolver(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryNewResolverIterator, error) {
  4159  
  4160  	var nodeRule []interface{}
  4161  	for _, nodeItem := range node {
  4162  		nodeRule = append(nodeRule, nodeItem)
  4163  	}
  4164  
  4165  	logs, sub, err := _ENSRegistry.contract.FilterLogs(opts, "NewResolver", nodeRule)
  4166  	if err != nil {
  4167  		return nil, err
  4168  	}
  4169  	return &ENSRegistryNewResolverIterator{contract: _ENSRegistry.contract, event: "NewResolver", logs: logs, sub: sub}, nil
  4170  }
  4171  
  4172  // WatchNewResolver is a free log subscription operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  4173  //
  4174  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  4175  func (_ENSRegistry *ENSRegistryFilterer) WatchNewResolver(opts *bind.WatchOpts, sink chan<- *ENSRegistryNewResolver, node [][32]byte) (event.Subscription, error) {
  4176  
  4177  	var nodeRule []interface{}
  4178  	for _, nodeItem := range node {
  4179  		nodeRule = append(nodeRule, nodeItem)
  4180  	}
  4181  
  4182  	logs, sub, err := _ENSRegistry.contract.WatchLogs(opts, "NewResolver", nodeRule)
  4183  	if err != nil {
  4184  		return nil, err
  4185  	}
  4186  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4187  		defer sub.Unsubscribe()
  4188  		for {
  4189  			select {
  4190  			case log := <-logs:
  4191  				// New log arrived, parse the event and forward to the user
  4192  				event := new(ENSRegistryNewResolver)
  4193  				if err := _ENSRegistry.contract.UnpackLog(event, "NewResolver", log); err != nil {
  4194  					return err
  4195  				}
  4196  				event.Raw = log
  4197  
  4198  				select {
  4199  				case sink <- event:
  4200  				case err := <-sub.Err():
  4201  					return err
  4202  				case <-quit:
  4203  					return nil
  4204  				}
  4205  			case err := <-sub.Err():
  4206  				return err
  4207  			case <-quit:
  4208  				return nil
  4209  			}
  4210  		}
  4211  	}), nil
  4212  }
  4213  
  4214  // ParseNewResolver is a log parse operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  4215  //
  4216  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  4217  func (_ENSRegistry *ENSRegistryFilterer) ParseNewResolver(log types.Log) (*ENSRegistryNewResolver, error) {
  4218  	event := new(ENSRegistryNewResolver)
  4219  	if err := _ENSRegistry.contract.UnpackLog(event, "NewResolver", log); err != nil {
  4220  		return nil, err
  4221  	}
  4222  	event.Raw = log
  4223  	return event, nil
  4224  }
  4225  
  4226  // ENSRegistryNewTTLIterator is returned from FilterNewTTL and is used to iterate over the raw logs and unpacked data for NewTTL events raised by the ENSRegistry contract.
  4227  type ENSRegistryNewTTLIterator struct {
  4228  	Event *ENSRegistryNewTTL // Event containing the contract specifics and raw log
  4229  
  4230  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4231  	event    string              // Event name to use for unpacking event data
  4232  
  4233  	logs chan types.Log        // Log channel receiving the found contract events
  4234  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4235  	done bool                  // Whether the subscription completed delivering logs
  4236  	fail error                 // Occurred error to stop iteration
  4237  }
  4238  
  4239  // Next advances the iterator to the subsequent event, returning whether there
  4240  // are any more events found. In case of a retrieval or parsing error, false is
  4241  // returned and Error() can be queried for the exact failure.
  4242  func (it *ENSRegistryNewTTLIterator) Next() bool {
  4243  	// If the iterator failed, stop iterating
  4244  	if it.fail != nil {
  4245  		return false
  4246  	}
  4247  	// If the iterator completed, deliver directly whatever's available
  4248  	if it.done {
  4249  		select {
  4250  		case log := <-it.logs:
  4251  			it.Event = new(ENSRegistryNewTTL)
  4252  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4253  				it.fail = err
  4254  				return false
  4255  			}
  4256  			it.Event.Raw = log
  4257  			return true
  4258  
  4259  		default:
  4260  			return false
  4261  		}
  4262  	}
  4263  	// Iterator still in progress, wait for either a data or an error event
  4264  	select {
  4265  	case log := <-it.logs:
  4266  		it.Event = new(ENSRegistryNewTTL)
  4267  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4268  			it.fail = err
  4269  			return false
  4270  		}
  4271  		it.Event.Raw = log
  4272  		return true
  4273  
  4274  	case err := <-it.sub.Err():
  4275  		it.done = true
  4276  		it.fail = err
  4277  		return it.Next()
  4278  	}
  4279  }
  4280  
  4281  // Error returns any retrieval or parsing error occurred during filtering.
  4282  func (it *ENSRegistryNewTTLIterator) Error() error {
  4283  	return it.fail
  4284  }
  4285  
  4286  // Close terminates the iteration process, releasing any pending underlying
  4287  // resources.
  4288  func (it *ENSRegistryNewTTLIterator) Close() error {
  4289  	it.sub.Unsubscribe()
  4290  	return nil
  4291  }
  4292  
  4293  // ENSRegistryNewTTL represents a NewTTL event raised by the ENSRegistry contract.
  4294  type ENSRegistryNewTTL struct {
  4295  	Node [32]byte
  4296  	Ttl  uint64
  4297  	Raw  types.Log // Blockchain specific contextual infos
  4298  }
  4299  
  4300  // FilterNewTTL is a free log retrieval operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  4301  //
  4302  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  4303  func (_ENSRegistry *ENSRegistryFilterer) FilterNewTTL(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryNewTTLIterator, error) {
  4304  
  4305  	var nodeRule []interface{}
  4306  	for _, nodeItem := range node {
  4307  		nodeRule = append(nodeRule, nodeItem)
  4308  	}
  4309  
  4310  	logs, sub, err := _ENSRegistry.contract.FilterLogs(opts, "NewTTL", nodeRule)
  4311  	if err != nil {
  4312  		return nil, err
  4313  	}
  4314  	return &ENSRegistryNewTTLIterator{contract: _ENSRegistry.contract, event: "NewTTL", logs: logs, sub: sub}, nil
  4315  }
  4316  
  4317  // WatchNewTTL is a free log subscription operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  4318  //
  4319  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  4320  func (_ENSRegistry *ENSRegistryFilterer) WatchNewTTL(opts *bind.WatchOpts, sink chan<- *ENSRegistryNewTTL, node [][32]byte) (event.Subscription, error) {
  4321  
  4322  	var nodeRule []interface{}
  4323  	for _, nodeItem := range node {
  4324  		nodeRule = append(nodeRule, nodeItem)
  4325  	}
  4326  
  4327  	logs, sub, err := _ENSRegistry.contract.WatchLogs(opts, "NewTTL", nodeRule)
  4328  	if err != nil {
  4329  		return nil, err
  4330  	}
  4331  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4332  		defer sub.Unsubscribe()
  4333  		for {
  4334  			select {
  4335  			case log := <-logs:
  4336  				// New log arrived, parse the event and forward to the user
  4337  				event := new(ENSRegistryNewTTL)
  4338  				if err := _ENSRegistry.contract.UnpackLog(event, "NewTTL", log); err != nil {
  4339  					return err
  4340  				}
  4341  				event.Raw = log
  4342  
  4343  				select {
  4344  				case sink <- event:
  4345  				case err := <-sub.Err():
  4346  					return err
  4347  				case <-quit:
  4348  					return nil
  4349  				}
  4350  			case err := <-sub.Err():
  4351  				return err
  4352  			case <-quit:
  4353  				return nil
  4354  			}
  4355  		}
  4356  	}), nil
  4357  }
  4358  
  4359  // ParseNewTTL is a log parse operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  4360  //
  4361  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  4362  func (_ENSRegistry *ENSRegistryFilterer) ParseNewTTL(log types.Log) (*ENSRegistryNewTTL, error) {
  4363  	event := new(ENSRegistryNewTTL)
  4364  	if err := _ENSRegistry.contract.UnpackLog(event, "NewTTL", log); err != nil {
  4365  		return nil, err
  4366  	}
  4367  	event.Raw = log
  4368  	return event, nil
  4369  }
  4370  
  4371  // ENSRegistryTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ENSRegistry contract.
  4372  type ENSRegistryTransferIterator struct {
  4373  	Event *ENSRegistryTransfer // Event containing the contract specifics and raw log
  4374  
  4375  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4376  	event    string              // Event name to use for unpacking event data
  4377  
  4378  	logs chan types.Log        // Log channel receiving the found contract events
  4379  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4380  	done bool                  // Whether the subscription completed delivering logs
  4381  	fail error                 // Occurred error to stop iteration
  4382  }
  4383  
  4384  // Next advances the iterator to the subsequent event, returning whether there
  4385  // are any more events found. In case of a retrieval or parsing error, false is
  4386  // returned and Error() can be queried for the exact failure.
  4387  func (it *ENSRegistryTransferIterator) Next() bool {
  4388  	// If the iterator failed, stop iterating
  4389  	if it.fail != nil {
  4390  		return false
  4391  	}
  4392  	// If the iterator completed, deliver directly whatever's available
  4393  	if it.done {
  4394  		select {
  4395  		case log := <-it.logs:
  4396  			it.Event = new(ENSRegistryTransfer)
  4397  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4398  				it.fail = err
  4399  				return false
  4400  			}
  4401  			it.Event.Raw = log
  4402  			return true
  4403  
  4404  		default:
  4405  			return false
  4406  		}
  4407  	}
  4408  	// Iterator still in progress, wait for either a data or an error event
  4409  	select {
  4410  	case log := <-it.logs:
  4411  		it.Event = new(ENSRegistryTransfer)
  4412  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4413  			it.fail = err
  4414  			return false
  4415  		}
  4416  		it.Event.Raw = log
  4417  		return true
  4418  
  4419  	case err := <-it.sub.Err():
  4420  		it.done = true
  4421  		it.fail = err
  4422  		return it.Next()
  4423  	}
  4424  }
  4425  
  4426  // Error returns any retrieval or parsing error occurred during filtering.
  4427  func (it *ENSRegistryTransferIterator) Error() error {
  4428  	return it.fail
  4429  }
  4430  
  4431  // Close terminates the iteration process, releasing any pending underlying
  4432  // resources.
  4433  func (it *ENSRegistryTransferIterator) Close() error {
  4434  	it.sub.Unsubscribe()
  4435  	return nil
  4436  }
  4437  
  4438  // ENSRegistryTransfer represents a Transfer event raised by the ENSRegistry contract.
  4439  type ENSRegistryTransfer struct {
  4440  	Node  [32]byte
  4441  	Owner common.Address
  4442  	Raw   types.Log // Blockchain specific contextual infos
  4443  }
  4444  
  4445  // FilterTransfer is a free log retrieval operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  4446  //
  4447  // Solidity: event Transfer(bytes32 indexed node, address owner)
  4448  func (_ENSRegistry *ENSRegistryFilterer) FilterTransfer(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryTransferIterator, error) {
  4449  
  4450  	var nodeRule []interface{}
  4451  	for _, nodeItem := range node {
  4452  		nodeRule = append(nodeRule, nodeItem)
  4453  	}
  4454  
  4455  	logs, sub, err := _ENSRegistry.contract.FilterLogs(opts, "Transfer", nodeRule)
  4456  	if err != nil {
  4457  		return nil, err
  4458  	}
  4459  	return &ENSRegistryTransferIterator{contract: _ENSRegistry.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4460  }
  4461  
  4462  // WatchTransfer is a free log subscription operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  4463  //
  4464  // Solidity: event Transfer(bytes32 indexed node, address owner)
  4465  func (_ENSRegistry *ENSRegistryFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ENSRegistryTransfer, node [][32]byte) (event.Subscription, error) {
  4466  
  4467  	var nodeRule []interface{}
  4468  	for _, nodeItem := range node {
  4469  		nodeRule = append(nodeRule, nodeItem)
  4470  	}
  4471  
  4472  	logs, sub, err := _ENSRegistry.contract.WatchLogs(opts, "Transfer", nodeRule)
  4473  	if err != nil {
  4474  		return nil, err
  4475  	}
  4476  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4477  		defer sub.Unsubscribe()
  4478  		for {
  4479  			select {
  4480  			case log := <-logs:
  4481  				// New log arrived, parse the event and forward to the user
  4482  				event := new(ENSRegistryTransfer)
  4483  				if err := _ENSRegistry.contract.UnpackLog(event, "Transfer", log); err != nil {
  4484  					return err
  4485  				}
  4486  				event.Raw = log
  4487  
  4488  				select {
  4489  				case sink <- event:
  4490  				case err := <-sub.Err():
  4491  					return err
  4492  				case <-quit:
  4493  					return nil
  4494  				}
  4495  			case err := <-sub.Err():
  4496  				return err
  4497  			case <-quit:
  4498  				return nil
  4499  			}
  4500  		}
  4501  	}), nil
  4502  }
  4503  
  4504  // ParseTransfer is a log parse operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  4505  //
  4506  // Solidity: event Transfer(bytes32 indexed node, address owner)
  4507  func (_ENSRegistry *ENSRegistryFilterer) ParseTransfer(log types.Log) (*ENSRegistryTransfer, error) {
  4508  	event := new(ENSRegistryTransfer)
  4509  	if err := _ENSRegistry.contract.UnpackLog(event, "Transfer", log); err != nil {
  4510  		return nil, err
  4511  	}
  4512  	event.Raw = log
  4513  	return event, nil
  4514  }
  4515  
  4516  // ENSRegistryWithFallbackABI is the input ABI used to generate the binding from.
  4517  const ENSRegistryWithFallbackABI = "[{\"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\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"label\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"resolver\",\"type\":\"address\"},{\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  4518  
  4519  // ENSRegistryWithFallbackFuncSigs maps the 4-byte function signature to its string representation.
  4520  var ENSRegistryWithFallbackFuncSigs = map[string]string{
  4521  	"e985e9c5": "isApprovedForAll(address,address)",
  4522  	"02571be3": "owner(bytes32)",
  4523  	"f79fe538": "recordExists(bytes32)",
  4524  	"0178b8bf": "resolver(bytes32)",
  4525  	"a22cb465": "setApprovalForAll(address,bool)",
  4526  	"5b0fc9c3": "setOwner(bytes32,address)",
  4527  	"cf408823": "setRecord(bytes32,address,address,uint64)",
  4528  	"1896f70a": "setResolver(bytes32,address)",
  4529  	"06ab5923": "setSubnodeOwner(bytes32,bytes32,address)",
  4530  	"5ef2c7f0": "setSubnodeRecord(bytes32,bytes32,address,address,uint64)",
  4531  	"14ab9038": "setTTL(bytes32,uint64)",
  4532  	"16a25cbd": "ttl(bytes32)",
  4533  }
  4534  
  4535  // ENSRegistryWithFallback is an auto generated Go binding around an Ethereum contract.
  4536  type ENSRegistryWithFallback struct {
  4537  	ENSRegistryWithFallbackCaller     // Read-only binding to the contract
  4538  	ENSRegistryWithFallbackTransactor // Write-only binding to the contract
  4539  	ENSRegistryWithFallbackFilterer   // Log filterer for contract events
  4540  }
  4541  
  4542  // ENSRegistryWithFallbackCaller is an auto generated read-only Go binding around an Ethereum contract.
  4543  type ENSRegistryWithFallbackCaller struct {
  4544  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4545  }
  4546  
  4547  // ENSRegistryWithFallbackTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4548  type ENSRegistryWithFallbackTransactor struct {
  4549  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4550  }
  4551  
  4552  // ENSRegistryWithFallbackFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4553  type ENSRegistryWithFallbackFilterer struct {
  4554  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4555  }
  4556  
  4557  // ENSRegistryWithFallbackSession is an auto generated Go binding around an Ethereum contract,
  4558  // with pre-set call and transact options.
  4559  type ENSRegistryWithFallbackSession struct {
  4560  	Contract     *ENSRegistryWithFallback // Generic contract binding to set the session for
  4561  	CallOpts     bind.CallOpts            // Call options to use throughout this session
  4562  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  4563  }
  4564  
  4565  // ENSRegistryWithFallbackCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4566  // with pre-set call options.
  4567  type ENSRegistryWithFallbackCallerSession struct {
  4568  	Contract *ENSRegistryWithFallbackCaller // Generic contract caller binding to set the session for
  4569  	CallOpts bind.CallOpts                  // Call options to use throughout this session
  4570  }
  4571  
  4572  // ENSRegistryWithFallbackTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4573  // with pre-set transact options.
  4574  type ENSRegistryWithFallbackTransactorSession struct {
  4575  	Contract     *ENSRegistryWithFallbackTransactor // Generic contract transactor binding to set the session for
  4576  	TransactOpts bind.TransactOpts                  // Transaction auth options to use throughout this session
  4577  }
  4578  
  4579  // ENSRegistryWithFallbackRaw is an auto generated low-level Go binding around an Ethereum contract.
  4580  type ENSRegistryWithFallbackRaw struct {
  4581  	Contract *ENSRegistryWithFallback // Generic contract binding to access the raw methods on
  4582  }
  4583  
  4584  // ENSRegistryWithFallbackCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4585  type ENSRegistryWithFallbackCallerRaw struct {
  4586  	Contract *ENSRegistryWithFallbackCaller // Generic read-only contract binding to access the raw methods on
  4587  }
  4588  
  4589  // ENSRegistryWithFallbackTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4590  type ENSRegistryWithFallbackTransactorRaw struct {
  4591  	Contract *ENSRegistryWithFallbackTransactor // Generic write-only contract binding to access the raw methods on
  4592  }
  4593  
  4594  // NewENSRegistryWithFallback creates a new instance of ENSRegistryWithFallback, bound to a specific deployed contract.
  4595  func NewENSRegistryWithFallback(address common.Address, backend bind.ContractBackend) (*ENSRegistryWithFallback, error) {
  4596  	contract, err := bindENSRegistryWithFallback(address, backend, backend, backend)
  4597  	if err != nil {
  4598  		return nil, err
  4599  	}
  4600  	return &ENSRegistryWithFallback{ENSRegistryWithFallbackCaller: ENSRegistryWithFallbackCaller{contract: contract}, ENSRegistryWithFallbackTransactor: ENSRegistryWithFallbackTransactor{contract: contract}, ENSRegistryWithFallbackFilterer: ENSRegistryWithFallbackFilterer{contract: contract}}, nil
  4601  }
  4602  
  4603  // NewENSRegistryWithFallbackCaller creates a new read-only instance of ENSRegistryWithFallback, bound to a specific deployed contract.
  4604  func NewENSRegistryWithFallbackCaller(address common.Address, caller bind.ContractCaller) (*ENSRegistryWithFallbackCaller, error) {
  4605  	contract, err := bindENSRegistryWithFallback(address, caller, nil, nil)
  4606  	if err != nil {
  4607  		return nil, err
  4608  	}
  4609  	return &ENSRegistryWithFallbackCaller{contract: contract}, nil
  4610  }
  4611  
  4612  // NewENSRegistryWithFallbackTransactor creates a new write-only instance of ENSRegistryWithFallback, bound to a specific deployed contract.
  4613  func NewENSRegistryWithFallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*ENSRegistryWithFallbackTransactor, error) {
  4614  	contract, err := bindENSRegistryWithFallback(address, nil, transactor, nil)
  4615  	if err != nil {
  4616  		return nil, err
  4617  	}
  4618  	return &ENSRegistryWithFallbackTransactor{contract: contract}, nil
  4619  }
  4620  
  4621  // NewENSRegistryWithFallbackFilterer creates a new log filterer instance of ENSRegistryWithFallback, bound to a specific deployed contract.
  4622  func NewENSRegistryWithFallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*ENSRegistryWithFallbackFilterer, error) {
  4623  	contract, err := bindENSRegistryWithFallback(address, nil, nil, filterer)
  4624  	if err != nil {
  4625  		return nil, err
  4626  	}
  4627  	return &ENSRegistryWithFallbackFilterer{contract: contract}, nil
  4628  }
  4629  
  4630  // bindENSRegistryWithFallback binds a generic wrapper to an already deployed contract.
  4631  func bindENSRegistryWithFallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4632  	parsed, err := abi.JSON(strings.NewReader(ENSRegistryWithFallbackABI))
  4633  	if err != nil {
  4634  		return nil, err
  4635  	}
  4636  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4637  }
  4638  
  4639  // Call invokes the (constant) contract method with params as input values and
  4640  // sets the output to result. The result type might be a single field for simple
  4641  // returns, a slice of interfaces for anonymous returns and a struct for named
  4642  // returns.
  4643  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4644  	return _ENSRegistryWithFallback.Contract.ENSRegistryWithFallbackCaller.contract.Call(opts, result, method, params...)
  4645  }
  4646  
  4647  // Transfer initiates a plain transaction to move funds to the contract, calling
  4648  // its default method if one is available.
  4649  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4650  	return _ENSRegistryWithFallback.Contract.ENSRegistryWithFallbackTransactor.contract.Transfer(opts)
  4651  }
  4652  
  4653  // Transact invokes the (paid) contract method with params as input values.
  4654  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4655  	return _ENSRegistryWithFallback.Contract.ENSRegistryWithFallbackTransactor.contract.Transact(opts, method, params...)
  4656  }
  4657  
  4658  // Call invokes the (constant) contract method with params as input values and
  4659  // sets the output to result. The result type might be a single field for simple
  4660  // returns, a slice of interfaces for anonymous returns and a struct for named
  4661  // returns.
  4662  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4663  	return _ENSRegistryWithFallback.Contract.contract.Call(opts, result, method, params...)
  4664  }
  4665  
  4666  // Transfer initiates a plain transaction to move funds to the contract, calling
  4667  // its default method if one is available.
  4668  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4669  	return _ENSRegistryWithFallback.Contract.contract.Transfer(opts)
  4670  }
  4671  
  4672  // Transact invokes the (paid) contract method with params as input values.
  4673  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4674  	return _ENSRegistryWithFallback.Contract.contract.Transact(opts, method, params...)
  4675  }
  4676  
  4677  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4678  //
  4679  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4680  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  4681  	var out []interface{}
  4682  	err := _ENSRegistryWithFallback.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  4683  
  4684  	if err != nil {
  4685  		return *new(bool), err
  4686  	}
  4687  
  4688  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4689  
  4690  	return out0, err
  4691  
  4692  }
  4693  
  4694  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4695  //
  4696  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4697  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4698  	return _ENSRegistryWithFallback.Contract.IsApprovedForAll(&_ENSRegistryWithFallback.CallOpts, owner, operator)
  4699  }
  4700  
  4701  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4702  //
  4703  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4704  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4705  	return _ENSRegistryWithFallback.Contract.IsApprovedForAll(&_ENSRegistryWithFallback.CallOpts, owner, operator)
  4706  }
  4707  
  4708  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  4709  //
  4710  // Solidity: function owner(bytes32 node) view returns(address)
  4711  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCaller) Owner(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  4712  	var out []interface{}
  4713  	err := _ENSRegistryWithFallback.contract.Call(opts, &out, "owner", node)
  4714  
  4715  	if err != nil {
  4716  		return *new(common.Address), err
  4717  	}
  4718  
  4719  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4720  
  4721  	return out0, err
  4722  
  4723  }
  4724  
  4725  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  4726  //
  4727  // Solidity: function owner(bytes32 node) view returns(address)
  4728  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) Owner(node [32]byte) (common.Address, error) {
  4729  	return _ENSRegistryWithFallback.Contract.Owner(&_ENSRegistryWithFallback.CallOpts, node)
  4730  }
  4731  
  4732  // Owner is a free data retrieval call binding the contract method 0x02571be3.
  4733  //
  4734  // Solidity: function owner(bytes32 node) view returns(address)
  4735  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerSession) Owner(node [32]byte) (common.Address, error) {
  4736  	return _ENSRegistryWithFallback.Contract.Owner(&_ENSRegistryWithFallback.CallOpts, node)
  4737  }
  4738  
  4739  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  4740  //
  4741  // Solidity: function recordExists(bytes32 node) view returns(bool)
  4742  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCaller) RecordExists(opts *bind.CallOpts, node [32]byte) (bool, error) {
  4743  	var out []interface{}
  4744  	err := _ENSRegistryWithFallback.contract.Call(opts, &out, "recordExists", node)
  4745  
  4746  	if err != nil {
  4747  		return *new(bool), err
  4748  	}
  4749  
  4750  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4751  
  4752  	return out0, err
  4753  
  4754  }
  4755  
  4756  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  4757  //
  4758  // Solidity: function recordExists(bytes32 node) view returns(bool)
  4759  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) RecordExists(node [32]byte) (bool, error) {
  4760  	return _ENSRegistryWithFallback.Contract.RecordExists(&_ENSRegistryWithFallback.CallOpts, node)
  4761  }
  4762  
  4763  // RecordExists is a free data retrieval call binding the contract method 0xf79fe538.
  4764  //
  4765  // Solidity: function recordExists(bytes32 node) view returns(bool)
  4766  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerSession) RecordExists(node [32]byte) (bool, error) {
  4767  	return _ENSRegistryWithFallback.Contract.RecordExists(&_ENSRegistryWithFallback.CallOpts, node)
  4768  }
  4769  
  4770  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  4771  //
  4772  // Solidity: function resolver(bytes32 node) view returns(address)
  4773  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCaller) Resolver(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  4774  	var out []interface{}
  4775  	err := _ENSRegistryWithFallback.contract.Call(opts, &out, "resolver", node)
  4776  
  4777  	if err != nil {
  4778  		return *new(common.Address), err
  4779  	}
  4780  
  4781  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4782  
  4783  	return out0, err
  4784  
  4785  }
  4786  
  4787  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  4788  //
  4789  // Solidity: function resolver(bytes32 node) view returns(address)
  4790  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) Resolver(node [32]byte) (common.Address, error) {
  4791  	return _ENSRegistryWithFallback.Contract.Resolver(&_ENSRegistryWithFallback.CallOpts, node)
  4792  }
  4793  
  4794  // Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
  4795  //
  4796  // Solidity: function resolver(bytes32 node) view returns(address)
  4797  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerSession) Resolver(node [32]byte) (common.Address, error) {
  4798  	return _ENSRegistryWithFallback.Contract.Resolver(&_ENSRegistryWithFallback.CallOpts, node)
  4799  }
  4800  
  4801  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  4802  //
  4803  // Solidity: function ttl(bytes32 node) view returns(uint64)
  4804  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCaller) Ttl(opts *bind.CallOpts, node [32]byte) (uint64, error) {
  4805  	var out []interface{}
  4806  	err := _ENSRegistryWithFallback.contract.Call(opts, &out, "ttl", node)
  4807  
  4808  	if err != nil {
  4809  		return *new(uint64), err
  4810  	}
  4811  
  4812  	out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
  4813  
  4814  	return out0, err
  4815  
  4816  }
  4817  
  4818  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  4819  //
  4820  // Solidity: function ttl(bytes32 node) view returns(uint64)
  4821  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) Ttl(node [32]byte) (uint64, error) {
  4822  	return _ENSRegistryWithFallback.Contract.Ttl(&_ENSRegistryWithFallback.CallOpts, node)
  4823  }
  4824  
  4825  // Ttl is a free data retrieval call binding the contract method 0x16a25cbd.
  4826  //
  4827  // Solidity: function ttl(bytes32 node) view returns(uint64)
  4828  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackCallerSession) Ttl(node [32]byte) (uint64, error) {
  4829  	return _ENSRegistryWithFallback.Contract.Ttl(&_ENSRegistryWithFallback.CallOpts, node)
  4830  }
  4831  
  4832  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4833  //
  4834  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  4835  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) {
  4836  	return _ENSRegistryWithFallback.contract.Transact(opts, "setApprovalForAll", operator, approved)
  4837  }
  4838  
  4839  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4840  //
  4841  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  4842  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  4843  	return _ENSRegistryWithFallback.Contract.SetApprovalForAll(&_ENSRegistryWithFallback.TransactOpts, operator, approved)
  4844  }
  4845  
  4846  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4847  //
  4848  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  4849  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  4850  	return _ENSRegistryWithFallback.Contract.SetApprovalForAll(&_ENSRegistryWithFallback.TransactOpts, operator, approved)
  4851  }
  4852  
  4853  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  4854  //
  4855  // Solidity: function setOwner(bytes32 node, address owner) returns()
  4856  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetOwner(opts *bind.TransactOpts, node [32]byte, owner common.Address) (*types.Transaction, error) {
  4857  	return _ENSRegistryWithFallback.contract.Transact(opts, "setOwner", node, owner)
  4858  }
  4859  
  4860  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  4861  //
  4862  // Solidity: function setOwner(bytes32 node, address owner) returns()
  4863  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  4864  	return _ENSRegistryWithFallback.Contract.SetOwner(&_ENSRegistryWithFallback.TransactOpts, node, owner)
  4865  }
  4866  
  4867  // SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
  4868  //
  4869  // Solidity: function setOwner(bytes32 node, address owner) returns()
  4870  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
  4871  	return _ENSRegistryWithFallback.Contract.SetOwner(&_ENSRegistryWithFallback.TransactOpts, node, owner)
  4872  }
  4873  
  4874  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  4875  //
  4876  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  4877  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetRecord(opts *bind.TransactOpts, node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4878  	return _ENSRegistryWithFallback.contract.Transact(opts, "setRecord", node, owner, resolver, ttl)
  4879  }
  4880  
  4881  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  4882  //
  4883  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  4884  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4885  	return _ENSRegistryWithFallback.Contract.SetRecord(&_ENSRegistryWithFallback.TransactOpts, node, owner, resolver, ttl)
  4886  }
  4887  
  4888  // SetRecord is a paid mutator transaction binding the contract method 0xcf408823.
  4889  //
  4890  // Solidity: function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) returns()
  4891  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetRecord(node [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4892  	return _ENSRegistryWithFallback.Contract.SetRecord(&_ENSRegistryWithFallback.TransactOpts, node, owner, resolver, ttl)
  4893  }
  4894  
  4895  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  4896  //
  4897  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  4898  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetResolver(opts *bind.TransactOpts, node [32]byte, resolver common.Address) (*types.Transaction, error) {
  4899  	return _ENSRegistryWithFallback.contract.Transact(opts, "setResolver", node, resolver)
  4900  }
  4901  
  4902  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  4903  //
  4904  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  4905  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  4906  	return _ENSRegistryWithFallback.Contract.SetResolver(&_ENSRegistryWithFallback.TransactOpts, node, resolver)
  4907  }
  4908  
  4909  // SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
  4910  //
  4911  // Solidity: function setResolver(bytes32 node, address resolver) returns()
  4912  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
  4913  	return _ENSRegistryWithFallback.Contract.SetResolver(&_ENSRegistryWithFallback.TransactOpts, node, resolver)
  4914  }
  4915  
  4916  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  4917  //
  4918  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  4919  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetSubnodeOwner(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  4920  	return _ENSRegistryWithFallback.contract.Transact(opts, "setSubnodeOwner", node, label, owner)
  4921  }
  4922  
  4923  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  4924  //
  4925  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  4926  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  4927  	return _ENSRegistryWithFallback.Contract.SetSubnodeOwner(&_ENSRegistryWithFallback.TransactOpts, node, label, owner)
  4928  }
  4929  
  4930  // SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
  4931  //
  4932  // Solidity: function setSubnodeOwner(bytes32 node, bytes32 label, address owner) returns(bytes32)
  4933  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
  4934  	return _ENSRegistryWithFallback.Contract.SetSubnodeOwner(&_ENSRegistryWithFallback.TransactOpts, node, label, owner)
  4935  }
  4936  
  4937  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  4938  //
  4939  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  4940  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetSubnodeRecord(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4941  	return _ENSRegistryWithFallback.contract.Transact(opts, "setSubnodeRecord", node, label, owner, resolver, ttl)
  4942  }
  4943  
  4944  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  4945  //
  4946  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  4947  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4948  	return _ENSRegistryWithFallback.Contract.SetSubnodeRecord(&_ENSRegistryWithFallback.TransactOpts, node, label, owner, resolver, ttl)
  4949  }
  4950  
  4951  // SetSubnodeRecord is a paid mutator transaction binding the contract method 0x5ef2c7f0.
  4952  //
  4953  // Solidity: function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) returns()
  4954  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetSubnodeRecord(node [32]byte, label [32]byte, owner common.Address, resolver common.Address, ttl uint64) (*types.Transaction, error) {
  4955  	return _ENSRegistryWithFallback.Contract.SetSubnodeRecord(&_ENSRegistryWithFallback.TransactOpts, node, label, owner, resolver, ttl)
  4956  }
  4957  
  4958  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  4959  //
  4960  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  4961  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactor) SetTTL(opts *bind.TransactOpts, node [32]byte, ttl uint64) (*types.Transaction, error) {
  4962  	return _ENSRegistryWithFallback.contract.Transact(opts, "setTTL", node, ttl)
  4963  }
  4964  
  4965  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  4966  //
  4967  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  4968  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  4969  	return _ENSRegistryWithFallback.Contract.SetTTL(&_ENSRegistryWithFallback.TransactOpts, node, ttl)
  4970  }
  4971  
  4972  // SetTTL is a paid mutator transaction binding the contract method 0x14ab9038.
  4973  //
  4974  // Solidity: function setTTL(bytes32 node, uint64 ttl) returns()
  4975  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackTransactorSession) SetTTL(node [32]byte, ttl uint64) (*types.Transaction, error) {
  4976  	return _ENSRegistryWithFallback.Contract.SetTTL(&_ENSRegistryWithFallback.TransactOpts, node, ttl)
  4977  }
  4978  
  4979  // ENSRegistryWithFallbackApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ENSRegistryWithFallback contract.
  4980  type ENSRegistryWithFallbackApprovalForAllIterator struct {
  4981  	Event *ENSRegistryWithFallbackApprovalForAll // Event containing the contract specifics and raw log
  4982  
  4983  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4984  	event    string              // Event name to use for unpacking event data
  4985  
  4986  	logs chan types.Log        // Log channel receiving the found contract events
  4987  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4988  	done bool                  // Whether the subscription completed delivering logs
  4989  	fail error                 // Occurred error to stop iteration
  4990  }
  4991  
  4992  // Next advances the iterator to the subsequent event, returning whether there
  4993  // are any more events found. In case of a retrieval or parsing error, false is
  4994  // returned and Error() can be queried for the exact failure.
  4995  func (it *ENSRegistryWithFallbackApprovalForAllIterator) Next() bool {
  4996  	// If the iterator failed, stop iterating
  4997  	if it.fail != nil {
  4998  		return false
  4999  	}
  5000  	// If the iterator completed, deliver directly whatever's available
  5001  	if it.done {
  5002  		select {
  5003  		case log := <-it.logs:
  5004  			it.Event = new(ENSRegistryWithFallbackApprovalForAll)
  5005  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5006  				it.fail = err
  5007  				return false
  5008  			}
  5009  			it.Event.Raw = log
  5010  			return true
  5011  
  5012  		default:
  5013  			return false
  5014  		}
  5015  	}
  5016  	// Iterator still in progress, wait for either a data or an error event
  5017  	select {
  5018  	case log := <-it.logs:
  5019  		it.Event = new(ENSRegistryWithFallbackApprovalForAll)
  5020  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5021  			it.fail = err
  5022  			return false
  5023  		}
  5024  		it.Event.Raw = log
  5025  		return true
  5026  
  5027  	case err := <-it.sub.Err():
  5028  		it.done = true
  5029  		it.fail = err
  5030  		return it.Next()
  5031  	}
  5032  }
  5033  
  5034  // Error returns any retrieval or parsing error occurred during filtering.
  5035  func (it *ENSRegistryWithFallbackApprovalForAllIterator) Error() error {
  5036  	return it.fail
  5037  }
  5038  
  5039  // Close terminates the iteration process, releasing any pending underlying
  5040  // resources.
  5041  func (it *ENSRegistryWithFallbackApprovalForAllIterator) Close() error {
  5042  	it.sub.Unsubscribe()
  5043  	return nil
  5044  }
  5045  
  5046  // ENSRegistryWithFallbackApprovalForAll represents a ApprovalForAll event raised by the ENSRegistryWithFallback contract.
  5047  type ENSRegistryWithFallbackApprovalForAll struct {
  5048  	Owner    common.Address
  5049  	Operator common.Address
  5050  	Approved bool
  5051  	Raw      types.Log // Blockchain specific contextual infos
  5052  }
  5053  
  5054  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5055  //
  5056  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5057  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ENSRegistryWithFallbackApprovalForAllIterator, error) {
  5058  
  5059  	var ownerRule []interface{}
  5060  	for _, ownerItem := range owner {
  5061  		ownerRule = append(ownerRule, ownerItem)
  5062  	}
  5063  	var operatorRule []interface{}
  5064  	for _, operatorItem := range operator {
  5065  		operatorRule = append(operatorRule, operatorItem)
  5066  	}
  5067  
  5068  	logs, sub, err := _ENSRegistryWithFallback.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5069  	if err != nil {
  5070  		return nil, err
  5071  	}
  5072  	return &ENSRegistryWithFallbackApprovalForAllIterator{contract: _ENSRegistryWithFallback.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  5073  }
  5074  
  5075  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5076  //
  5077  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5078  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ENSRegistryWithFallbackApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  5079  
  5080  	var ownerRule []interface{}
  5081  	for _, ownerItem := range owner {
  5082  		ownerRule = append(ownerRule, ownerItem)
  5083  	}
  5084  	var operatorRule []interface{}
  5085  	for _, operatorItem := range operator {
  5086  		operatorRule = append(operatorRule, operatorItem)
  5087  	}
  5088  
  5089  	logs, sub, err := _ENSRegistryWithFallback.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5090  	if err != nil {
  5091  		return nil, err
  5092  	}
  5093  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5094  		defer sub.Unsubscribe()
  5095  		for {
  5096  			select {
  5097  			case log := <-logs:
  5098  				// New log arrived, parse the event and forward to the user
  5099  				event := new(ENSRegistryWithFallbackApprovalForAll)
  5100  				if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5101  					return err
  5102  				}
  5103  				event.Raw = log
  5104  
  5105  				select {
  5106  				case sink <- event:
  5107  				case err := <-sub.Err():
  5108  					return err
  5109  				case <-quit:
  5110  					return nil
  5111  				}
  5112  			case err := <-sub.Err():
  5113  				return err
  5114  			case <-quit:
  5115  				return nil
  5116  			}
  5117  		}
  5118  	}), nil
  5119  }
  5120  
  5121  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5122  //
  5123  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5124  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) ParseApprovalForAll(log types.Log) (*ENSRegistryWithFallbackApprovalForAll, error) {
  5125  	event := new(ENSRegistryWithFallbackApprovalForAll)
  5126  	if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5127  		return nil, err
  5128  	}
  5129  	event.Raw = log
  5130  	return event, nil
  5131  }
  5132  
  5133  // ENSRegistryWithFallbackNewOwnerIterator is returned from FilterNewOwner and is used to iterate over the raw logs and unpacked data for NewOwner events raised by the ENSRegistryWithFallback contract.
  5134  type ENSRegistryWithFallbackNewOwnerIterator struct {
  5135  	Event *ENSRegistryWithFallbackNewOwner // Event containing the contract specifics and raw log
  5136  
  5137  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5138  	event    string              // Event name to use for unpacking event data
  5139  
  5140  	logs chan types.Log        // Log channel receiving the found contract events
  5141  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5142  	done bool                  // Whether the subscription completed delivering logs
  5143  	fail error                 // Occurred error to stop iteration
  5144  }
  5145  
  5146  // Next advances the iterator to the subsequent event, returning whether there
  5147  // are any more events found. In case of a retrieval or parsing error, false is
  5148  // returned and Error() can be queried for the exact failure.
  5149  func (it *ENSRegistryWithFallbackNewOwnerIterator) Next() bool {
  5150  	// If the iterator failed, stop iterating
  5151  	if it.fail != nil {
  5152  		return false
  5153  	}
  5154  	// If the iterator completed, deliver directly whatever's available
  5155  	if it.done {
  5156  		select {
  5157  		case log := <-it.logs:
  5158  			it.Event = new(ENSRegistryWithFallbackNewOwner)
  5159  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5160  				it.fail = err
  5161  				return false
  5162  			}
  5163  			it.Event.Raw = log
  5164  			return true
  5165  
  5166  		default:
  5167  			return false
  5168  		}
  5169  	}
  5170  	// Iterator still in progress, wait for either a data or an error event
  5171  	select {
  5172  	case log := <-it.logs:
  5173  		it.Event = new(ENSRegistryWithFallbackNewOwner)
  5174  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5175  			it.fail = err
  5176  			return false
  5177  		}
  5178  		it.Event.Raw = log
  5179  		return true
  5180  
  5181  	case err := <-it.sub.Err():
  5182  		it.done = true
  5183  		it.fail = err
  5184  		return it.Next()
  5185  	}
  5186  }
  5187  
  5188  // Error returns any retrieval or parsing error occurred during filtering.
  5189  func (it *ENSRegistryWithFallbackNewOwnerIterator) Error() error {
  5190  	return it.fail
  5191  }
  5192  
  5193  // Close terminates the iteration process, releasing any pending underlying
  5194  // resources.
  5195  func (it *ENSRegistryWithFallbackNewOwnerIterator) Close() error {
  5196  	it.sub.Unsubscribe()
  5197  	return nil
  5198  }
  5199  
  5200  // ENSRegistryWithFallbackNewOwner represents a NewOwner event raised by the ENSRegistryWithFallback contract.
  5201  type ENSRegistryWithFallbackNewOwner struct {
  5202  	Node  [32]byte
  5203  	Label [32]byte
  5204  	Owner common.Address
  5205  	Raw   types.Log // Blockchain specific contextual infos
  5206  }
  5207  
  5208  // FilterNewOwner is a free log retrieval operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  5209  //
  5210  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  5211  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) FilterNewOwner(opts *bind.FilterOpts, node [][32]byte, label [][32]byte) (*ENSRegistryWithFallbackNewOwnerIterator, error) {
  5212  
  5213  	var nodeRule []interface{}
  5214  	for _, nodeItem := range node {
  5215  		nodeRule = append(nodeRule, nodeItem)
  5216  	}
  5217  	var labelRule []interface{}
  5218  	for _, labelItem := range label {
  5219  		labelRule = append(labelRule, labelItem)
  5220  	}
  5221  
  5222  	logs, sub, err := _ENSRegistryWithFallback.contract.FilterLogs(opts, "NewOwner", nodeRule, labelRule)
  5223  	if err != nil {
  5224  		return nil, err
  5225  	}
  5226  	return &ENSRegistryWithFallbackNewOwnerIterator{contract: _ENSRegistryWithFallback.contract, event: "NewOwner", logs: logs, sub: sub}, nil
  5227  }
  5228  
  5229  // WatchNewOwner is a free log subscription operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  5230  //
  5231  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  5232  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) WatchNewOwner(opts *bind.WatchOpts, sink chan<- *ENSRegistryWithFallbackNewOwner, node [][32]byte, label [][32]byte) (event.Subscription, error) {
  5233  
  5234  	var nodeRule []interface{}
  5235  	for _, nodeItem := range node {
  5236  		nodeRule = append(nodeRule, nodeItem)
  5237  	}
  5238  	var labelRule []interface{}
  5239  	for _, labelItem := range label {
  5240  		labelRule = append(labelRule, labelItem)
  5241  	}
  5242  
  5243  	logs, sub, err := _ENSRegistryWithFallback.contract.WatchLogs(opts, "NewOwner", nodeRule, labelRule)
  5244  	if err != nil {
  5245  		return nil, err
  5246  	}
  5247  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5248  		defer sub.Unsubscribe()
  5249  		for {
  5250  			select {
  5251  			case log := <-logs:
  5252  				// New log arrived, parse the event and forward to the user
  5253  				event := new(ENSRegistryWithFallbackNewOwner)
  5254  				if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewOwner", log); err != nil {
  5255  					return err
  5256  				}
  5257  				event.Raw = log
  5258  
  5259  				select {
  5260  				case sink <- event:
  5261  				case err := <-sub.Err():
  5262  					return err
  5263  				case <-quit:
  5264  					return nil
  5265  				}
  5266  			case err := <-sub.Err():
  5267  				return err
  5268  			case <-quit:
  5269  				return nil
  5270  			}
  5271  		}
  5272  	}), nil
  5273  }
  5274  
  5275  // ParseNewOwner is a log parse operation binding the contract event 0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82.
  5276  //
  5277  // Solidity: event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner)
  5278  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) ParseNewOwner(log types.Log) (*ENSRegistryWithFallbackNewOwner, error) {
  5279  	event := new(ENSRegistryWithFallbackNewOwner)
  5280  	if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewOwner", log); err != nil {
  5281  		return nil, err
  5282  	}
  5283  	event.Raw = log
  5284  	return event, nil
  5285  }
  5286  
  5287  // ENSRegistryWithFallbackNewResolverIterator is returned from FilterNewResolver and is used to iterate over the raw logs and unpacked data for NewResolver events raised by the ENSRegistryWithFallback contract.
  5288  type ENSRegistryWithFallbackNewResolverIterator struct {
  5289  	Event *ENSRegistryWithFallbackNewResolver // Event containing the contract specifics and raw log
  5290  
  5291  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5292  	event    string              // Event name to use for unpacking event data
  5293  
  5294  	logs chan types.Log        // Log channel receiving the found contract events
  5295  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5296  	done bool                  // Whether the subscription completed delivering logs
  5297  	fail error                 // Occurred error to stop iteration
  5298  }
  5299  
  5300  // Next advances the iterator to the subsequent event, returning whether there
  5301  // are any more events found. In case of a retrieval or parsing error, false is
  5302  // returned and Error() can be queried for the exact failure.
  5303  func (it *ENSRegistryWithFallbackNewResolverIterator) Next() bool {
  5304  	// If the iterator failed, stop iterating
  5305  	if it.fail != nil {
  5306  		return false
  5307  	}
  5308  	// If the iterator completed, deliver directly whatever's available
  5309  	if it.done {
  5310  		select {
  5311  		case log := <-it.logs:
  5312  			it.Event = new(ENSRegistryWithFallbackNewResolver)
  5313  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5314  				it.fail = err
  5315  				return false
  5316  			}
  5317  			it.Event.Raw = log
  5318  			return true
  5319  
  5320  		default:
  5321  			return false
  5322  		}
  5323  	}
  5324  	// Iterator still in progress, wait for either a data or an error event
  5325  	select {
  5326  	case log := <-it.logs:
  5327  		it.Event = new(ENSRegistryWithFallbackNewResolver)
  5328  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5329  			it.fail = err
  5330  			return false
  5331  		}
  5332  		it.Event.Raw = log
  5333  		return true
  5334  
  5335  	case err := <-it.sub.Err():
  5336  		it.done = true
  5337  		it.fail = err
  5338  		return it.Next()
  5339  	}
  5340  }
  5341  
  5342  // Error returns any retrieval or parsing error occurred during filtering.
  5343  func (it *ENSRegistryWithFallbackNewResolverIterator) Error() error {
  5344  	return it.fail
  5345  }
  5346  
  5347  // Close terminates the iteration process, releasing any pending underlying
  5348  // resources.
  5349  func (it *ENSRegistryWithFallbackNewResolverIterator) Close() error {
  5350  	it.sub.Unsubscribe()
  5351  	return nil
  5352  }
  5353  
  5354  // ENSRegistryWithFallbackNewResolver represents a NewResolver event raised by the ENSRegistryWithFallback contract.
  5355  type ENSRegistryWithFallbackNewResolver struct {
  5356  	Node     [32]byte
  5357  	Resolver common.Address
  5358  	Raw      types.Log // Blockchain specific contextual infos
  5359  }
  5360  
  5361  // FilterNewResolver is a free log retrieval operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  5362  //
  5363  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  5364  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) FilterNewResolver(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryWithFallbackNewResolverIterator, error) {
  5365  
  5366  	var nodeRule []interface{}
  5367  	for _, nodeItem := range node {
  5368  		nodeRule = append(nodeRule, nodeItem)
  5369  	}
  5370  
  5371  	logs, sub, err := _ENSRegistryWithFallback.contract.FilterLogs(opts, "NewResolver", nodeRule)
  5372  	if err != nil {
  5373  		return nil, err
  5374  	}
  5375  	return &ENSRegistryWithFallbackNewResolverIterator{contract: _ENSRegistryWithFallback.contract, event: "NewResolver", logs: logs, sub: sub}, nil
  5376  }
  5377  
  5378  // WatchNewResolver is a free log subscription operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  5379  //
  5380  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  5381  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) WatchNewResolver(opts *bind.WatchOpts, sink chan<- *ENSRegistryWithFallbackNewResolver, node [][32]byte) (event.Subscription, error) {
  5382  
  5383  	var nodeRule []interface{}
  5384  	for _, nodeItem := range node {
  5385  		nodeRule = append(nodeRule, nodeItem)
  5386  	}
  5387  
  5388  	logs, sub, err := _ENSRegistryWithFallback.contract.WatchLogs(opts, "NewResolver", nodeRule)
  5389  	if err != nil {
  5390  		return nil, err
  5391  	}
  5392  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5393  		defer sub.Unsubscribe()
  5394  		for {
  5395  			select {
  5396  			case log := <-logs:
  5397  				// New log arrived, parse the event and forward to the user
  5398  				event := new(ENSRegistryWithFallbackNewResolver)
  5399  				if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewResolver", log); err != nil {
  5400  					return err
  5401  				}
  5402  				event.Raw = log
  5403  
  5404  				select {
  5405  				case sink <- event:
  5406  				case err := <-sub.Err():
  5407  					return err
  5408  				case <-quit:
  5409  					return nil
  5410  				}
  5411  			case err := <-sub.Err():
  5412  				return err
  5413  			case <-quit:
  5414  				return nil
  5415  			}
  5416  		}
  5417  	}), nil
  5418  }
  5419  
  5420  // ParseNewResolver is a log parse operation binding the contract event 0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0.
  5421  //
  5422  // Solidity: event NewResolver(bytes32 indexed node, address resolver)
  5423  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) ParseNewResolver(log types.Log) (*ENSRegistryWithFallbackNewResolver, error) {
  5424  	event := new(ENSRegistryWithFallbackNewResolver)
  5425  	if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewResolver", log); err != nil {
  5426  		return nil, err
  5427  	}
  5428  	event.Raw = log
  5429  	return event, nil
  5430  }
  5431  
  5432  // ENSRegistryWithFallbackNewTTLIterator is returned from FilterNewTTL and is used to iterate over the raw logs and unpacked data for NewTTL events raised by the ENSRegistryWithFallback contract.
  5433  type ENSRegistryWithFallbackNewTTLIterator struct {
  5434  	Event *ENSRegistryWithFallbackNewTTL // Event containing the contract specifics and raw log
  5435  
  5436  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5437  	event    string              // Event name to use for unpacking event data
  5438  
  5439  	logs chan types.Log        // Log channel receiving the found contract events
  5440  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5441  	done bool                  // Whether the subscription completed delivering logs
  5442  	fail error                 // Occurred error to stop iteration
  5443  }
  5444  
  5445  // Next advances the iterator to the subsequent event, returning whether there
  5446  // are any more events found. In case of a retrieval or parsing error, false is
  5447  // returned and Error() can be queried for the exact failure.
  5448  func (it *ENSRegistryWithFallbackNewTTLIterator) Next() bool {
  5449  	// If the iterator failed, stop iterating
  5450  	if it.fail != nil {
  5451  		return false
  5452  	}
  5453  	// If the iterator completed, deliver directly whatever's available
  5454  	if it.done {
  5455  		select {
  5456  		case log := <-it.logs:
  5457  			it.Event = new(ENSRegistryWithFallbackNewTTL)
  5458  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5459  				it.fail = err
  5460  				return false
  5461  			}
  5462  			it.Event.Raw = log
  5463  			return true
  5464  
  5465  		default:
  5466  			return false
  5467  		}
  5468  	}
  5469  	// Iterator still in progress, wait for either a data or an error event
  5470  	select {
  5471  	case log := <-it.logs:
  5472  		it.Event = new(ENSRegistryWithFallbackNewTTL)
  5473  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5474  			it.fail = err
  5475  			return false
  5476  		}
  5477  		it.Event.Raw = log
  5478  		return true
  5479  
  5480  	case err := <-it.sub.Err():
  5481  		it.done = true
  5482  		it.fail = err
  5483  		return it.Next()
  5484  	}
  5485  }
  5486  
  5487  // Error returns any retrieval or parsing error occurred during filtering.
  5488  func (it *ENSRegistryWithFallbackNewTTLIterator) Error() error {
  5489  	return it.fail
  5490  }
  5491  
  5492  // Close terminates the iteration process, releasing any pending underlying
  5493  // resources.
  5494  func (it *ENSRegistryWithFallbackNewTTLIterator) Close() error {
  5495  	it.sub.Unsubscribe()
  5496  	return nil
  5497  }
  5498  
  5499  // ENSRegistryWithFallbackNewTTL represents a NewTTL event raised by the ENSRegistryWithFallback contract.
  5500  type ENSRegistryWithFallbackNewTTL struct {
  5501  	Node [32]byte
  5502  	Ttl  uint64
  5503  	Raw  types.Log // Blockchain specific contextual infos
  5504  }
  5505  
  5506  // FilterNewTTL is a free log retrieval operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  5507  //
  5508  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  5509  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) FilterNewTTL(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryWithFallbackNewTTLIterator, error) {
  5510  
  5511  	var nodeRule []interface{}
  5512  	for _, nodeItem := range node {
  5513  		nodeRule = append(nodeRule, nodeItem)
  5514  	}
  5515  
  5516  	logs, sub, err := _ENSRegistryWithFallback.contract.FilterLogs(opts, "NewTTL", nodeRule)
  5517  	if err != nil {
  5518  		return nil, err
  5519  	}
  5520  	return &ENSRegistryWithFallbackNewTTLIterator{contract: _ENSRegistryWithFallback.contract, event: "NewTTL", logs: logs, sub: sub}, nil
  5521  }
  5522  
  5523  // WatchNewTTL is a free log subscription operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  5524  //
  5525  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  5526  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) WatchNewTTL(opts *bind.WatchOpts, sink chan<- *ENSRegistryWithFallbackNewTTL, node [][32]byte) (event.Subscription, error) {
  5527  
  5528  	var nodeRule []interface{}
  5529  	for _, nodeItem := range node {
  5530  		nodeRule = append(nodeRule, nodeItem)
  5531  	}
  5532  
  5533  	logs, sub, err := _ENSRegistryWithFallback.contract.WatchLogs(opts, "NewTTL", nodeRule)
  5534  	if err != nil {
  5535  		return nil, err
  5536  	}
  5537  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5538  		defer sub.Unsubscribe()
  5539  		for {
  5540  			select {
  5541  			case log := <-logs:
  5542  				// New log arrived, parse the event and forward to the user
  5543  				event := new(ENSRegistryWithFallbackNewTTL)
  5544  				if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewTTL", log); err != nil {
  5545  					return err
  5546  				}
  5547  				event.Raw = log
  5548  
  5549  				select {
  5550  				case sink <- event:
  5551  				case err := <-sub.Err():
  5552  					return err
  5553  				case <-quit:
  5554  					return nil
  5555  				}
  5556  			case err := <-sub.Err():
  5557  				return err
  5558  			case <-quit:
  5559  				return nil
  5560  			}
  5561  		}
  5562  	}), nil
  5563  }
  5564  
  5565  // ParseNewTTL is a log parse operation binding the contract event 0x1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68.
  5566  //
  5567  // Solidity: event NewTTL(bytes32 indexed node, uint64 ttl)
  5568  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) ParseNewTTL(log types.Log) (*ENSRegistryWithFallbackNewTTL, error) {
  5569  	event := new(ENSRegistryWithFallbackNewTTL)
  5570  	if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "NewTTL", log); err != nil {
  5571  		return nil, err
  5572  	}
  5573  	event.Raw = log
  5574  	return event, nil
  5575  }
  5576  
  5577  // ENSRegistryWithFallbackTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ENSRegistryWithFallback contract.
  5578  type ENSRegistryWithFallbackTransferIterator struct {
  5579  	Event *ENSRegistryWithFallbackTransfer // Event containing the contract specifics and raw log
  5580  
  5581  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5582  	event    string              // Event name to use for unpacking event data
  5583  
  5584  	logs chan types.Log        // Log channel receiving the found contract events
  5585  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5586  	done bool                  // Whether the subscription completed delivering logs
  5587  	fail error                 // Occurred error to stop iteration
  5588  }
  5589  
  5590  // Next advances the iterator to the subsequent event, returning whether there
  5591  // are any more events found. In case of a retrieval or parsing error, false is
  5592  // returned and Error() can be queried for the exact failure.
  5593  func (it *ENSRegistryWithFallbackTransferIterator) Next() bool {
  5594  	// If the iterator failed, stop iterating
  5595  	if it.fail != nil {
  5596  		return false
  5597  	}
  5598  	// If the iterator completed, deliver directly whatever's available
  5599  	if it.done {
  5600  		select {
  5601  		case log := <-it.logs:
  5602  			it.Event = new(ENSRegistryWithFallbackTransfer)
  5603  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5604  				it.fail = err
  5605  				return false
  5606  			}
  5607  			it.Event.Raw = log
  5608  			return true
  5609  
  5610  		default:
  5611  			return false
  5612  		}
  5613  	}
  5614  	// Iterator still in progress, wait for either a data or an error event
  5615  	select {
  5616  	case log := <-it.logs:
  5617  		it.Event = new(ENSRegistryWithFallbackTransfer)
  5618  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5619  			it.fail = err
  5620  			return false
  5621  		}
  5622  		it.Event.Raw = log
  5623  		return true
  5624  
  5625  	case err := <-it.sub.Err():
  5626  		it.done = true
  5627  		it.fail = err
  5628  		return it.Next()
  5629  	}
  5630  }
  5631  
  5632  // Error returns any retrieval or parsing error occurred during filtering.
  5633  func (it *ENSRegistryWithFallbackTransferIterator) Error() error {
  5634  	return it.fail
  5635  }
  5636  
  5637  // Close terminates the iteration process, releasing any pending underlying
  5638  // resources.
  5639  func (it *ENSRegistryWithFallbackTransferIterator) Close() error {
  5640  	it.sub.Unsubscribe()
  5641  	return nil
  5642  }
  5643  
  5644  // ENSRegistryWithFallbackTransfer represents a Transfer event raised by the ENSRegistryWithFallback contract.
  5645  type ENSRegistryWithFallbackTransfer struct {
  5646  	Node  [32]byte
  5647  	Owner common.Address
  5648  	Raw   types.Log // Blockchain specific contextual infos
  5649  }
  5650  
  5651  // FilterTransfer is a free log retrieval operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  5652  //
  5653  // Solidity: event Transfer(bytes32 indexed node, address owner)
  5654  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) FilterTransfer(opts *bind.FilterOpts, node [][32]byte) (*ENSRegistryWithFallbackTransferIterator, error) {
  5655  
  5656  	var nodeRule []interface{}
  5657  	for _, nodeItem := range node {
  5658  		nodeRule = append(nodeRule, nodeItem)
  5659  	}
  5660  
  5661  	logs, sub, err := _ENSRegistryWithFallback.contract.FilterLogs(opts, "Transfer", nodeRule)
  5662  	if err != nil {
  5663  		return nil, err
  5664  	}
  5665  	return &ENSRegistryWithFallbackTransferIterator{contract: _ENSRegistryWithFallback.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5666  }
  5667  
  5668  // WatchTransfer is a free log subscription operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  5669  //
  5670  // Solidity: event Transfer(bytes32 indexed node, address owner)
  5671  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ENSRegistryWithFallbackTransfer, node [][32]byte) (event.Subscription, error) {
  5672  
  5673  	var nodeRule []interface{}
  5674  	for _, nodeItem := range node {
  5675  		nodeRule = append(nodeRule, nodeItem)
  5676  	}
  5677  
  5678  	logs, sub, err := _ENSRegistryWithFallback.contract.WatchLogs(opts, "Transfer", nodeRule)
  5679  	if err != nil {
  5680  		return nil, err
  5681  	}
  5682  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5683  		defer sub.Unsubscribe()
  5684  		for {
  5685  			select {
  5686  			case log := <-logs:
  5687  				// New log arrived, parse the event and forward to the user
  5688  				event := new(ENSRegistryWithFallbackTransfer)
  5689  				if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "Transfer", log); err != nil {
  5690  					return err
  5691  				}
  5692  				event.Raw = log
  5693  
  5694  				select {
  5695  				case sink <- event:
  5696  				case err := <-sub.Err():
  5697  					return err
  5698  				case <-quit:
  5699  					return nil
  5700  				}
  5701  			case err := <-sub.Err():
  5702  				return err
  5703  			case <-quit:
  5704  				return nil
  5705  			}
  5706  		}
  5707  	}), nil
  5708  }
  5709  
  5710  // ParseTransfer is a log parse operation binding the contract event 0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266.
  5711  //
  5712  // Solidity: event Transfer(bytes32 indexed node, address owner)
  5713  func (_ENSRegistryWithFallback *ENSRegistryWithFallbackFilterer) ParseTransfer(log types.Log) (*ENSRegistryWithFallbackTransfer, error) {
  5714  	event := new(ENSRegistryWithFallbackTransfer)
  5715  	if err := _ENSRegistryWithFallback.contract.UnpackLog(event, "Transfer", log); err != nil {
  5716  		return nil, err
  5717  	}
  5718  	event.Raw = log
  5719  	return event, nil
  5720  }
  5721  
  5722  // InterfaceResolverABI is the input ABI used to generate the binding from.
  5723  const InterfaceResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"},{\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"}]"
  5724  
  5725  // InterfaceResolverFuncSigs maps the 4-byte function signature to its string representation.
  5726  var InterfaceResolverFuncSigs = map[string]string{
  5727  	"3b3b57de": "addr(bytes32)",
  5728  	"f1cb7e06": "addr(bytes32,uint256)",
  5729  	"124a319c": "interfaceImplementer(bytes32,bytes4)",
  5730  	"d5fa2b00": "setAddr(bytes32,address)",
  5731  	"8b95dd71": "setAddr(bytes32,uint256,bytes)",
  5732  	"e59d895d": "setInterface(bytes32,bytes4,address)",
  5733  	"01ffc9a7": "supportsInterface(bytes4)",
  5734  }
  5735  
  5736  // InterfaceResolver is an auto generated Go binding around an Ethereum contract.
  5737  type InterfaceResolver struct {
  5738  	InterfaceResolverCaller     // Read-only binding to the contract
  5739  	InterfaceResolverTransactor // Write-only binding to the contract
  5740  	InterfaceResolverFilterer   // Log filterer for contract events
  5741  }
  5742  
  5743  // InterfaceResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  5744  type InterfaceResolverCaller struct {
  5745  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5746  }
  5747  
  5748  // InterfaceResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5749  type InterfaceResolverTransactor struct {
  5750  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5751  }
  5752  
  5753  // InterfaceResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5754  type InterfaceResolverFilterer struct {
  5755  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5756  }
  5757  
  5758  // InterfaceResolverSession is an auto generated Go binding around an Ethereum contract,
  5759  // with pre-set call and transact options.
  5760  type InterfaceResolverSession struct {
  5761  	Contract     *InterfaceResolver // Generic contract binding to set the session for
  5762  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  5763  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5764  }
  5765  
  5766  // InterfaceResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5767  // with pre-set call options.
  5768  type InterfaceResolverCallerSession struct {
  5769  	Contract *InterfaceResolverCaller // Generic contract caller binding to set the session for
  5770  	CallOpts bind.CallOpts            // Call options to use throughout this session
  5771  }
  5772  
  5773  // InterfaceResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5774  // with pre-set transact options.
  5775  type InterfaceResolverTransactorSession struct {
  5776  	Contract     *InterfaceResolverTransactor // Generic contract transactor binding to set the session for
  5777  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  5778  }
  5779  
  5780  // InterfaceResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  5781  type InterfaceResolverRaw struct {
  5782  	Contract *InterfaceResolver // Generic contract binding to access the raw methods on
  5783  }
  5784  
  5785  // InterfaceResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5786  type InterfaceResolverCallerRaw struct {
  5787  	Contract *InterfaceResolverCaller // Generic read-only contract binding to access the raw methods on
  5788  }
  5789  
  5790  // InterfaceResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5791  type InterfaceResolverTransactorRaw struct {
  5792  	Contract *InterfaceResolverTransactor // Generic write-only contract binding to access the raw methods on
  5793  }
  5794  
  5795  // NewInterfaceResolver creates a new instance of InterfaceResolver, bound to a specific deployed contract.
  5796  func NewInterfaceResolver(address common.Address, backend bind.ContractBackend) (*InterfaceResolver, error) {
  5797  	contract, err := bindInterfaceResolver(address, backend, backend, backend)
  5798  	if err != nil {
  5799  		return nil, err
  5800  	}
  5801  	return &InterfaceResolver{InterfaceResolverCaller: InterfaceResolverCaller{contract: contract}, InterfaceResolverTransactor: InterfaceResolverTransactor{contract: contract}, InterfaceResolverFilterer: InterfaceResolverFilterer{contract: contract}}, nil
  5802  }
  5803  
  5804  // NewInterfaceResolverCaller creates a new read-only instance of InterfaceResolver, bound to a specific deployed contract.
  5805  func NewInterfaceResolverCaller(address common.Address, caller bind.ContractCaller) (*InterfaceResolverCaller, error) {
  5806  	contract, err := bindInterfaceResolver(address, caller, nil, nil)
  5807  	if err != nil {
  5808  		return nil, err
  5809  	}
  5810  	return &InterfaceResolverCaller{contract: contract}, nil
  5811  }
  5812  
  5813  // NewInterfaceResolverTransactor creates a new write-only instance of InterfaceResolver, bound to a specific deployed contract.
  5814  func NewInterfaceResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*InterfaceResolverTransactor, error) {
  5815  	contract, err := bindInterfaceResolver(address, nil, transactor, nil)
  5816  	if err != nil {
  5817  		return nil, err
  5818  	}
  5819  	return &InterfaceResolverTransactor{contract: contract}, nil
  5820  }
  5821  
  5822  // NewInterfaceResolverFilterer creates a new log filterer instance of InterfaceResolver, bound to a specific deployed contract.
  5823  func NewInterfaceResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*InterfaceResolverFilterer, error) {
  5824  	contract, err := bindInterfaceResolver(address, nil, nil, filterer)
  5825  	if err != nil {
  5826  		return nil, err
  5827  	}
  5828  	return &InterfaceResolverFilterer{contract: contract}, nil
  5829  }
  5830  
  5831  // bindInterfaceResolver binds a generic wrapper to an already deployed contract.
  5832  func bindInterfaceResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5833  	parsed, err := abi.JSON(strings.NewReader(InterfaceResolverABI))
  5834  	if err != nil {
  5835  		return nil, err
  5836  	}
  5837  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5838  }
  5839  
  5840  // Call invokes the (constant) contract method with params as input values and
  5841  // sets the output to result. The result type might be a single field for simple
  5842  // returns, a slice of interfaces for anonymous returns and a struct for named
  5843  // returns.
  5844  func (_InterfaceResolver *InterfaceResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5845  	return _InterfaceResolver.Contract.InterfaceResolverCaller.contract.Call(opts, result, method, params...)
  5846  }
  5847  
  5848  // Transfer initiates a plain transaction to move funds to the contract, calling
  5849  // its default method if one is available.
  5850  func (_InterfaceResolver *InterfaceResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5851  	return _InterfaceResolver.Contract.InterfaceResolverTransactor.contract.Transfer(opts)
  5852  }
  5853  
  5854  // Transact invokes the (paid) contract method with params as input values.
  5855  func (_InterfaceResolver *InterfaceResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5856  	return _InterfaceResolver.Contract.InterfaceResolverTransactor.contract.Transact(opts, method, params...)
  5857  }
  5858  
  5859  // Call invokes the (constant) contract method with params as input values and
  5860  // sets the output to result. The result type might be a single field for simple
  5861  // returns, a slice of interfaces for anonymous returns and a struct for named
  5862  // returns.
  5863  func (_InterfaceResolver *InterfaceResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5864  	return _InterfaceResolver.Contract.contract.Call(opts, result, method, params...)
  5865  }
  5866  
  5867  // Transfer initiates a plain transaction to move funds to the contract, calling
  5868  // its default method if one is available.
  5869  func (_InterfaceResolver *InterfaceResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5870  	return _InterfaceResolver.Contract.contract.Transfer(opts)
  5871  }
  5872  
  5873  // Transact invokes the (paid) contract method with params as input values.
  5874  func (_InterfaceResolver *InterfaceResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5875  	return _InterfaceResolver.Contract.contract.Transact(opts, method, params...)
  5876  }
  5877  
  5878  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  5879  //
  5880  // Solidity: function addr(bytes32 node) view returns(address)
  5881  func (_InterfaceResolver *InterfaceResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  5882  	var out []interface{}
  5883  	err := _InterfaceResolver.contract.Call(opts, &out, "addr", node)
  5884  
  5885  	if err != nil {
  5886  		return *new(common.Address), err
  5887  	}
  5888  
  5889  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5890  
  5891  	return out0, err
  5892  
  5893  }
  5894  
  5895  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  5896  //
  5897  // Solidity: function addr(bytes32 node) view returns(address)
  5898  func (_InterfaceResolver *InterfaceResolverSession) Addr(node [32]byte) (common.Address, error) {
  5899  	return _InterfaceResolver.Contract.Addr(&_InterfaceResolver.CallOpts, node)
  5900  }
  5901  
  5902  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  5903  //
  5904  // Solidity: function addr(bytes32 node) view returns(address)
  5905  func (_InterfaceResolver *InterfaceResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
  5906  	return _InterfaceResolver.Contract.Addr(&_InterfaceResolver.CallOpts, node)
  5907  }
  5908  
  5909  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  5910  //
  5911  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  5912  func (_InterfaceResolver *InterfaceResolverCaller) Addr0(opts *bind.CallOpts, node [32]byte, coinType *big.Int) ([]byte, error) {
  5913  	var out []interface{}
  5914  	err := _InterfaceResolver.contract.Call(opts, &out, "addr0", node, coinType)
  5915  
  5916  	if err != nil {
  5917  		return *new([]byte), err
  5918  	}
  5919  
  5920  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  5921  
  5922  	return out0, err
  5923  
  5924  }
  5925  
  5926  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  5927  //
  5928  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  5929  func (_InterfaceResolver *InterfaceResolverSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
  5930  	return _InterfaceResolver.Contract.Addr0(&_InterfaceResolver.CallOpts, node, coinType)
  5931  }
  5932  
  5933  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  5934  //
  5935  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  5936  func (_InterfaceResolver *InterfaceResolverCallerSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
  5937  	return _InterfaceResolver.Contract.Addr0(&_InterfaceResolver.CallOpts, node, coinType)
  5938  }
  5939  
  5940  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  5941  //
  5942  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  5943  func (_InterfaceResolver *InterfaceResolverCaller) InterfaceImplementer(opts *bind.CallOpts, node [32]byte, interfaceID [4]byte) (common.Address, error) {
  5944  	var out []interface{}
  5945  	err := _InterfaceResolver.contract.Call(opts, &out, "interfaceImplementer", node, interfaceID)
  5946  
  5947  	if err != nil {
  5948  		return *new(common.Address), err
  5949  	}
  5950  
  5951  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5952  
  5953  	return out0, err
  5954  
  5955  }
  5956  
  5957  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  5958  //
  5959  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  5960  func (_InterfaceResolver *InterfaceResolverSession) InterfaceImplementer(node [32]byte, interfaceID [4]byte) (common.Address, error) {
  5961  	return _InterfaceResolver.Contract.InterfaceImplementer(&_InterfaceResolver.CallOpts, node, interfaceID)
  5962  }
  5963  
  5964  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  5965  //
  5966  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  5967  func (_InterfaceResolver *InterfaceResolverCallerSession) InterfaceImplementer(node [32]byte, interfaceID [4]byte) (common.Address, error) {
  5968  	return _InterfaceResolver.Contract.InterfaceImplementer(&_InterfaceResolver.CallOpts, node, interfaceID)
  5969  }
  5970  
  5971  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5972  //
  5973  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  5974  func (_InterfaceResolver *InterfaceResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  5975  	var out []interface{}
  5976  	err := _InterfaceResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  5977  
  5978  	if err != nil {
  5979  		return *new(bool), err
  5980  	}
  5981  
  5982  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5983  
  5984  	return out0, err
  5985  
  5986  }
  5987  
  5988  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5989  //
  5990  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  5991  func (_InterfaceResolver *InterfaceResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  5992  	return _InterfaceResolver.Contract.SupportsInterface(&_InterfaceResolver.CallOpts, interfaceID)
  5993  }
  5994  
  5995  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5996  //
  5997  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  5998  func (_InterfaceResolver *InterfaceResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  5999  	return _InterfaceResolver.Contract.SupportsInterface(&_InterfaceResolver.CallOpts, interfaceID)
  6000  }
  6001  
  6002  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  6003  //
  6004  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  6005  func (_InterfaceResolver *InterfaceResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  6006  	return _InterfaceResolver.contract.Transact(opts, "setAddr", node, coinType, a)
  6007  }
  6008  
  6009  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  6010  //
  6011  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  6012  func (_InterfaceResolver *InterfaceResolverSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  6013  	return _InterfaceResolver.Contract.SetAddr(&_InterfaceResolver.TransactOpts, node, coinType, a)
  6014  }
  6015  
  6016  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  6017  //
  6018  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  6019  func (_InterfaceResolver *InterfaceResolverTransactorSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  6020  	return _InterfaceResolver.Contract.SetAddr(&_InterfaceResolver.TransactOpts, node, coinType, a)
  6021  }
  6022  
  6023  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  6024  //
  6025  // Solidity: function setAddr(bytes32 node, address a) returns()
  6026  func (_InterfaceResolver *InterfaceResolverTransactor) SetAddr0(opts *bind.TransactOpts, node [32]byte, a common.Address) (*types.Transaction, error) {
  6027  	return _InterfaceResolver.contract.Transact(opts, "setAddr0", node, a)
  6028  }
  6029  
  6030  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  6031  //
  6032  // Solidity: function setAddr(bytes32 node, address a) returns()
  6033  func (_InterfaceResolver *InterfaceResolverSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
  6034  	return _InterfaceResolver.Contract.SetAddr0(&_InterfaceResolver.TransactOpts, node, a)
  6035  }
  6036  
  6037  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  6038  //
  6039  // Solidity: function setAddr(bytes32 node, address a) returns()
  6040  func (_InterfaceResolver *InterfaceResolverTransactorSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
  6041  	return _InterfaceResolver.Contract.SetAddr0(&_InterfaceResolver.TransactOpts, node, a)
  6042  }
  6043  
  6044  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  6045  //
  6046  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  6047  func (_InterfaceResolver *InterfaceResolverTransactor) SetInterface(opts *bind.TransactOpts, node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  6048  	return _InterfaceResolver.contract.Transact(opts, "setInterface", node, interfaceID, implementer)
  6049  }
  6050  
  6051  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  6052  //
  6053  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  6054  func (_InterfaceResolver *InterfaceResolverSession) SetInterface(node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  6055  	return _InterfaceResolver.Contract.SetInterface(&_InterfaceResolver.TransactOpts, node, interfaceID, implementer)
  6056  }
  6057  
  6058  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  6059  //
  6060  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  6061  func (_InterfaceResolver *InterfaceResolverTransactorSession) SetInterface(node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  6062  	return _InterfaceResolver.Contract.SetInterface(&_InterfaceResolver.TransactOpts, node, interfaceID, implementer)
  6063  }
  6064  
  6065  // InterfaceResolverAddrChangedIterator is returned from FilterAddrChanged and is used to iterate over the raw logs and unpacked data for AddrChanged events raised by the InterfaceResolver contract.
  6066  type InterfaceResolverAddrChangedIterator struct {
  6067  	Event *InterfaceResolverAddrChanged // Event containing the contract specifics and raw log
  6068  
  6069  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6070  	event    string              // Event name to use for unpacking event data
  6071  
  6072  	logs chan types.Log        // Log channel receiving the found contract events
  6073  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6074  	done bool                  // Whether the subscription completed delivering logs
  6075  	fail error                 // Occurred error to stop iteration
  6076  }
  6077  
  6078  // Next advances the iterator to the subsequent event, returning whether there
  6079  // are any more events found. In case of a retrieval or parsing error, false is
  6080  // returned and Error() can be queried for the exact failure.
  6081  func (it *InterfaceResolverAddrChangedIterator) Next() bool {
  6082  	// If the iterator failed, stop iterating
  6083  	if it.fail != nil {
  6084  		return false
  6085  	}
  6086  	// If the iterator completed, deliver directly whatever's available
  6087  	if it.done {
  6088  		select {
  6089  		case log := <-it.logs:
  6090  			it.Event = new(InterfaceResolverAddrChanged)
  6091  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6092  				it.fail = err
  6093  				return false
  6094  			}
  6095  			it.Event.Raw = log
  6096  			return true
  6097  
  6098  		default:
  6099  			return false
  6100  		}
  6101  	}
  6102  	// Iterator still in progress, wait for either a data or an error event
  6103  	select {
  6104  	case log := <-it.logs:
  6105  		it.Event = new(InterfaceResolverAddrChanged)
  6106  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6107  			it.fail = err
  6108  			return false
  6109  		}
  6110  		it.Event.Raw = log
  6111  		return true
  6112  
  6113  	case err := <-it.sub.Err():
  6114  		it.done = true
  6115  		it.fail = err
  6116  		return it.Next()
  6117  	}
  6118  }
  6119  
  6120  // Error returns any retrieval or parsing error occurred during filtering.
  6121  func (it *InterfaceResolverAddrChangedIterator) Error() error {
  6122  	return it.fail
  6123  }
  6124  
  6125  // Close terminates the iteration process, releasing any pending underlying
  6126  // resources.
  6127  func (it *InterfaceResolverAddrChangedIterator) Close() error {
  6128  	it.sub.Unsubscribe()
  6129  	return nil
  6130  }
  6131  
  6132  // InterfaceResolverAddrChanged represents a AddrChanged event raised by the InterfaceResolver contract.
  6133  type InterfaceResolverAddrChanged struct {
  6134  	Node [32]byte
  6135  	A    common.Address
  6136  	Raw  types.Log // Blockchain specific contextual infos
  6137  }
  6138  
  6139  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  6140  //
  6141  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  6142  func (_InterfaceResolver *InterfaceResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*InterfaceResolverAddrChangedIterator, error) {
  6143  
  6144  	var nodeRule []interface{}
  6145  	for _, nodeItem := range node {
  6146  		nodeRule = append(nodeRule, nodeItem)
  6147  	}
  6148  
  6149  	logs, sub, err := _InterfaceResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
  6150  	if err != nil {
  6151  		return nil, err
  6152  	}
  6153  	return &InterfaceResolverAddrChangedIterator{contract: _InterfaceResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
  6154  }
  6155  
  6156  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  6157  //
  6158  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  6159  func (_InterfaceResolver *InterfaceResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *InterfaceResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
  6160  
  6161  	var nodeRule []interface{}
  6162  	for _, nodeItem := range node {
  6163  		nodeRule = append(nodeRule, nodeItem)
  6164  	}
  6165  
  6166  	logs, sub, err := _InterfaceResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
  6167  	if err != nil {
  6168  		return nil, err
  6169  	}
  6170  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6171  		defer sub.Unsubscribe()
  6172  		for {
  6173  			select {
  6174  			case log := <-logs:
  6175  				// New log arrived, parse the event and forward to the user
  6176  				event := new(InterfaceResolverAddrChanged)
  6177  				if err := _InterfaceResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
  6178  					return err
  6179  				}
  6180  				event.Raw = log
  6181  
  6182  				select {
  6183  				case sink <- event:
  6184  				case err := <-sub.Err():
  6185  					return err
  6186  				case <-quit:
  6187  					return nil
  6188  				}
  6189  			case err := <-sub.Err():
  6190  				return err
  6191  			case <-quit:
  6192  				return nil
  6193  			}
  6194  		}
  6195  	}), nil
  6196  }
  6197  
  6198  // ParseAddrChanged is a log parse operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  6199  //
  6200  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  6201  func (_InterfaceResolver *InterfaceResolverFilterer) ParseAddrChanged(log types.Log) (*InterfaceResolverAddrChanged, error) {
  6202  	event := new(InterfaceResolverAddrChanged)
  6203  	if err := _InterfaceResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
  6204  		return nil, err
  6205  	}
  6206  	event.Raw = log
  6207  	return event, nil
  6208  }
  6209  
  6210  // InterfaceResolverAddressChangedIterator is returned from FilterAddressChanged and is used to iterate over the raw logs and unpacked data for AddressChanged events raised by the InterfaceResolver contract.
  6211  type InterfaceResolverAddressChangedIterator struct {
  6212  	Event *InterfaceResolverAddressChanged // Event containing the contract specifics and raw log
  6213  
  6214  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6215  	event    string              // Event name to use for unpacking event data
  6216  
  6217  	logs chan types.Log        // Log channel receiving the found contract events
  6218  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6219  	done bool                  // Whether the subscription completed delivering logs
  6220  	fail error                 // Occurred error to stop iteration
  6221  }
  6222  
  6223  // Next advances the iterator to the subsequent event, returning whether there
  6224  // are any more events found. In case of a retrieval or parsing error, false is
  6225  // returned and Error() can be queried for the exact failure.
  6226  func (it *InterfaceResolverAddressChangedIterator) Next() bool {
  6227  	// If the iterator failed, stop iterating
  6228  	if it.fail != nil {
  6229  		return false
  6230  	}
  6231  	// If the iterator completed, deliver directly whatever's available
  6232  	if it.done {
  6233  		select {
  6234  		case log := <-it.logs:
  6235  			it.Event = new(InterfaceResolverAddressChanged)
  6236  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6237  				it.fail = err
  6238  				return false
  6239  			}
  6240  			it.Event.Raw = log
  6241  			return true
  6242  
  6243  		default:
  6244  			return false
  6245  		}
  6246  	}
  6247  	// Iterator still in progress, wait for either a data or an error event
  6248  	select {
  6249  	case log := <-it.logs:
  6250  		it.Event = new(InterfaceResolverAddressChanged)
  6251  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6252  			it.fail = err
  6253  			return false
  6254  		}
  6255  		it.Event.Raw = log
  6256  		return true
  6257  
  6258  	case err := <-it.sub.Err():
  6259  		it.done = true
  6260  		it.fail = err
  6261  		return it.Next()
  6262  	}
  6263  }
  6264  
  6265  // Error returns any retrieval or parsing error occurred during filtering.
  6266  func (it *InterfaceResolverAddressChangedIterator) Error() error {
  6267  	return it.fail
  6268  }
  6269  
  6270  // Close terminates the iteration process, releasing any pending underlying
  6271  // resources.
  6272  func (it *InterfaceResolverAddressChangedIterator) Close() error {
  6273  	it.sub.Unsubscribe()
  6274  	return nil
  6275  }
  6276  
  6277  // InterfaceResolverAddressChanged represents a AddressChanged event raised by the InterfaceResolver contract.
  6278  type InterfaceResolverAddressChanged struct {
  6279  	Node       [32]byte
  6280  	CoinType   *big.Int
  6281  	NewAddress []byte
  6282  	Raw        types.Log // Blockchain specific contextual infos
  6283  }
  6284  
  6285  // FilterAddressChanged is a free log retrieval operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  6286  //
  6287  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  6288  func (_InterfaceResolver *InterfaceResolverFilterer) FilterAddressChanged(opts *bind.FilterOpts, node [][32]byte) (*InterfaceResolverAddressChangedIterator, error) {
  6289  
  6290  	var nodeRule []interface{}
  6291  	for _, nodeItem := range node {
  6292  		nodeRule = append(nodeRule, nodeItem)
  6293  	}
  6294  
  6295  	logs, sub, err := _InterfaceResolver.contract.FilterLogs(opts, "AddressChanged", nodeRule)
  6296  	if err != nil {
  6297  		return nil, err
  6298  	}
  6299  	return &InterfaceResolverAddressChangedIterator{contract: _InterfaceResolver.contract, event: "AddressChanged", logs: logs, sub: sub}, nil
  6300  }
  6301  
  6302  // WatchAddressChanged is a free log subscription operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  6303  //
  6304  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  6305  func (_InterfaceResolver *InterfaceResolverFilterer) WatchAddressChanged(opts *bind.WatchOpts, sink chan<- *InterfaceResolverAddressChanged, node [][32]byte) (event.Subscription, error) {
  6306  
  6307  	var nodeRule []interface{}
  6308  	for _, nodeItem := range node {
  6309  		nodeRule = append(nodeRule, nodeItem)
  6310  	}
  6311  
  6312  	logs, sub, err := _InterfaceResolver.contract.WatchLogs(opts, "AddressChanged", nodeRule)
  6313  	if err != nil {
  6314  		return nil, err
  6315  	}
  6316  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6317  		defer sub.Unsubscribe()
  6318  		for {
  6319  			select {
  6320  			case log := <-logs:
  6321  				// New log arrived, parse the event and forward to the user
  6322  				event := new(InterfaceResolverAddressChanged)
  6323  				if err := _InterfaceResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
  6324  					return err
  6325  				}
  6326  				event.Raw = log
  6327  
  6328  				select {
  6329  				case sink <- event:
  6330  				case err := <-sub.Err():
  6331  					return err
  6332  				case <-quit:
  6333  					return nil
  6334  				}
  6335  			case err := <-sub.Err():
  6336  				return err
  6337  			case <-quit:
  6338  				return nil
  6339  			}
  6340  		}
  6341  	}), nil
  6342  }
  6343  
  6344  // ParseAddressChanged is a log parse operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  6345  //
  6346  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  6347  func (_InterfaceResolver *InterfaceResolverFilterer) ParseAddressChanged(log types.Log) (*InterfaceResolverAddressChanged, error) {
  6348  	event := new(InterfaceResolverAddressChanged)
  6349  	if err := _InterfaceResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
  6350  		return nil, err
  6351  	}
  6352  	event.Raw = log
  6353  	return event, nil
  6354  }
  6355  
  6356  // InterfaceResolverInterfaceChangedIterator is returned from FilterInterfaceChanged and is used to iterate over the raw logs and unpacked data for InterfaceChanged events raised by the InterfaceResolver contract.
  6357  type InterfaceResolverInterfaceChangedIterator struct {
  6358  	Event *InterfaceResolverInterfaceChanged // Event containing the contract specifics and raw log
  6359  
  6360  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6361  	event    string              // Event name to use for unpacking event data
  6362  
  6363  	logs chan types.Log        // Log channel receiving the found contract events
  6364  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6365  	done bool                  // Whether the subscription completed delivering logs
  6366  	fail error                 // Occurred error to stop iteration
  6367  }
  6368  
  6369  // Next advances the iterator to the subsequent event, returning whether there
  6370  // are any more events found. In case of a retrieval or parsing error, false is
  6371  // returned and Error() can be queried for the exact failure.
  6372  func (it *InterfaceResolverInterfaceChangedIterator) Next() bool {
  6373  	// If the iterator failed, stop iterating
  6374  	if it.fail != nil {
  6375  		return false
  6376  	}
  6377  	// If the iterator completed, deliver directly whatever's available
  6378  	if it.done {
  6379  		select {
  6380  		case log := <-it.logs:
  6381  			it.Event = new(InterfaceResolverInterfaceChanged)
  6382  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6383  				it.fail = err
  6384  				return false
  6385  			}
  6386  			it.Event.Raw = log
  6387  			return true
  6388  
  6389  		default:
  6390  			return false
  6391  		}
  6392  	}
  6393  	// Iterator still in progress, wait for either a data or an error event
  6394  	select {
  6395  	case log := <-it.logs:
  6396  		it.Event = new(InterfaceResolverInterfaceChanged)
  6397  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6398  			it.fail = err
  6399  			return false
  6400  		}
  6401  		it.Event.Raw = log
  6402  		return true
  6403  
  6404  	case err := <-it.sub.Err():
  6405  		it.done = true
  6406  		it.fail = err
  6407  		return it.Next()
  6408  	}
  6409  }
  6410  
  6411  // Error returns any retrieval or parsing error occurred during filtering.
  6412  func (it *InterfaceResolverInterfaceChangedIterator) Error() error {
  6413  	return it.fail
  6414  }
  6415  
  6416  // Close terminates the iteration process, releasing any pending underlying
  6417  // resources.
  6418  func (it *InterfaceResolverInterfaceChangedIterator) Close() error {
  6419  	it.sub.Unsubscribe()
  6420  	return nil
  6421  }
  6422  
  6423  // InterfaceResolverInterfaceChanged represents a InterfaceChanged event raised by the InterfaceResolver contract.
  6424  type InterfaceResolverInterfaceChanged struct {
  6425  	Node        [32]byte
  6426  	InterfaceID [4]byte
  6427  	Implementer common.Address
  6428  	Raw         types.Log // Blockchain specific contextual infos
  6429  }
  6430  
  6431  // FilterInterfaceChanged is a free log retrieval operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  6432  //
  6433  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  6434  func (_InterfaceResolver *InterfaceResolverFilterer) FilterInterfaceChanged(opts *bind.FilterOpts, node [][32]byte, interfaceID [][4]byte) (*InterfaceResolverInterfaceChangedIterator, error) {
  6435  
  6436  	var nodeRule []interface{}
  6437  	for _, nodeItem := range node {
  6438  		nodeRule = append(nodeRule, nodeItem)
  6439  	}
  6440  	var interfaceIDRule []interface{}
  6441  	for _, interfaceIDItem := range interfaceID {
  6442  		interfaceIDRule = append(interfaceIDRule, interfaceIDItem)
  6443  	}
  6444  
  6445  	logs, sub, err := _InterfaceResolver.contract.FilterLogs(opts, "InterfaceChanged", nodeRule, interfaceIDRule)
  6446  	if err != nil {
  6447  		return nil, err
  6448  	}
  6449  	return &InterfaceResolverInterfaceChangedIterator{contract: _InterfaceResolver.contract, event: "InterfaceChanged", logs: logs, sub: sub}, nil
  6450  }
  6451  
  6452  // WatchInterfaceChanged is a free log subscription operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  6453  //
  6454  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  6455  func (_InterfaceResolver *InterfaceResolverFilterer) WatchInterfaceChanged(opts *bind.WatchOpts, sink chan<- *InterfaceResolverInterfaceChanged, node [][32]byte, interfaceID [][4]byte) (event.Subscription, error) {
  6456  
  6457  	var nodeRule []interface{}
  6458  	for _, nodeItem := range node {
  6459  		nodeRule = append(nodeRule, nodeItem)
  6460  	}
  6461  	var interfaceIDRule []interface{}
  6462  	for _, interfaceIDItem := range interfaceID {
  6463  		interfaceIDRule = append(interfaceIDRule, interfaceIDItem)
  6464  	}
  6465  
  6466  	logs, sub, err := _InterfaceResolver.contract.WatchLogs(opts, "InterfaceChanged", nodeRule, interfaceIDRule)
  6467  	if err != nil {
  6468  		return nil, err
  6469  	}
  6470  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6471  		defer sub.Unsubscribe()
  6472  		for {
  6473  			select {
  6474  			case log := <-logs:
  6475  				// New log arrived, parse the event and forward to the user
  6476  				event := new(InterfaceResolverInterfaceChanged)
  6477  				if err := _InterfaceResolver.contract.UnpackLog(event, "InterfaceChanged", log); err != nil {
  6478  					return err
  6479  				}
  6480  				event.Raw = log
  6481  
  6482  				select {
  6483  				case sink <- event:
  6484  				case err := <-sub.Err():
  6485  					return err
  6486  				case <-quit:
  6487  					return nil
  6488  				}
  6489  			case err := <-sub.Err():
  6490  				return err
  6491  			case <-quit:
  6492  				return nil
  6493  			}
  6494  		}
  6495  	}), nil
  6496  }
  6497  
  6498  // ParseInterfaceChanged is a log parse operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  6499  //
  6500  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  6501  func (_InterfaceResolver *InterfaceResolverFilterer) ParseInterfaceChanged(log types.Log) (*InterfaceResolverInterfaceChanged, error) {
  6502  	event := new(InterfaceResolverInterfaceChanged)
  6503  	if err := _InterfaceResolver.contract.UnpackLog(event, "InterfaceChanged", log); err != nil {
  6504  		return nil, err
  6505  	}
  6506  	event.Raw = log
  6507  	return event, nil
  6508  }
  6509  
  6510  // NameResolverABI is the input ABI used to generate the binding from.
  6511  const NameResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"}]"
  6512  
  6513  // NameResolverFuncSigs maps the 4-byte function signature to its string representation.
  6514  var NameResolverFuncSigs = map[string]string{
  6515  	"691f3431": "name(bytes32)",
  6516  	"77372213": "setName(bytes32,string)",
  6517  	"01ffc9a7": "supportsInterface(bytes4)",
  6518  }
  6519  
  6520  // NameResolver is an auto generated Go binding around an Ethereum contract.
  6521  type NameResolver struct {
  6522  	NameResolverCaller     // Read-only binding to the contract
  6523  	NameResolverTransactor // Write-only binding to the contract
  6524  	NameResolverFilterer   // Log filterer for contract events
  6525  }
  6526  
  6527  // NameResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  6528  type NameResolverCaller struct {
  6529  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6530  }
  6531  
  6532  // NameResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6533  type NameResolverTransactor struct {
  6534  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6535  }
  6536  
  6537  // NameResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6538  type NameResolverFilterer struct {
  6539  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6540  }
  6541  
  6542  // NameResolverSession is an auto generated Go binding around an Ethereum contract,
  6543  // with pre-set call and transact options.
  6544  type NameResolverSession struct {
  6545  	Contract     *NameResolver     // Generic contract binding to set the session for
  6546  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6547  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6548  }
  6549  
  6550  // NameResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6551  // with pre-set call options.
  6552  type NameResolverCallerSession struct {
  6553  	Contract *NameResolverCaller // Generic contract caller binding to set the session for
  6554  	CallOpts bind.CallOpts       // Call options to use throughout this session
  6555  }
  6556  
  6557  // NameResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6558  // with pre-set transact options.
  6559  type NameResolverTransactorSession struct {
  6560  	Contract     *NameResolverTransactor // Generic contract transactor binding to set the session for
  6561  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  6562  }
  6563  
  6564  // NameResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  6565  type NameResolverRaw struct {
  6566  	Contract *NameResolver // Generic contract binding to access the raw methods on
  6567  }
  6568  
  6569  // NameResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6570  type NameResolverCallerRaw struct {
  6571  	Contract *NameResolverCaller // Generic read-only contract binding to access the raw methods on
  6572  }
  6573  
  6574  // NameResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6575  type NameResolverTransactorRaw struct {
  6576  	Contract *NameResolverTransactor // Generic write-only contract binding to access the raw methods on
  6577  }
  6578  
  6579  // NewNameResolver creates a new instance of NameResolver, bound to a specific deployed contract.
  6580  func NewNameResolver(address common.Address, backend bind.ContractBackend) (*NameResolver, error) {
  6581  	contract, err := bindNameResolver(address, backend, backend, backend)
  6582  	if err != nil {
  6583  		return nil, err
  6584  	}
  6585  	return &NameResolver{NameResolverCaller: NameResolverCaller{contract: contract}, NameResolverTransactor: NameResolverTransactor{contract: contract}, NameResolverFilterer: NameResolverFilterer{contract: contract}}, nil
  6586  }
  6587  
  6588  // NewNameResolverCaller creates a new read-only instance of NameResolver, bound to a specific deployed contract.
  6589  func NewNameResolverCaller(address common.Address, caller bind.ContractCaller) (*NameResolverCaller, error) {
  6590  	contract, err := bindNameResolver(address, caller, nil, nil)
  6591  	if err != nil {
  6592  		return nil, err
  6593  	}
  6594  	return &NameResolverCaller{contract: contract}, nil
  6595  }
  6596  
  6597  // NewNameResolverTransactor creates a new write-only instance of NameResolver, bound to a specific deployed contract.
  6598  func NewNameResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*NameResolverTransactor, error) {
  6599  	contract, err := bindNameResolver(address, nil, transactor, nil)
  6600  	if err != nil {
  6601  		return nil, err
  6602  	}
  6603  	return &NameResolverTransactor{contract: contract}, nil
  6604  }
  6605  
  6606  // NewNameResolverFilterer creates a new log filterer instance of NameResolver, bound to a specific deployed contract.
  6607  func NewNameResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*NameResolverFilterer, error) {
  6608  	contract, err := bindNameResolver(address, nil, nil, filterer)
  6609  	if err != nil {
  6610  		return nil, err
  6611  	}
  6612  	return &NameResolverFilterer{contract: contract}, nil
  6613  }
  6614  
  6615  // bindNameResolver binds a generic wrapper to an already deployed contract.
  6616  func bindNameResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6617  	parsed, err := abi.JSON(strings.NewReader(NameResolverABI))
  6618  	if err != nil {
  6619  		return nil, err
  6620  	}
  6621  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6622  }
  6623  
  6624  // Call invokes the (constant) contract method with params as input values and
  6625  // sets the output to result. The result type might be a single field for simple
  6626  // returns, a slice of interfaces for anonymous returns and a struct for named
  6627  // returns.
  6628  func (_NameResolver *NameResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6629  	return _NameResolver.Contract.NameResolverCaller.contract.Call(opts, result, method, params...)
  6630  }
  6631  
  6632  // Transfer initiates a plain transaction to move funds to the contract, calling
  6633  // its default method if one is available.
  6634  func (_NameResolver *NameResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6635  	return _NameResolver.Contract.NameResolverTransactor.contract.Transfer(opts)
  6636  }
  6637  
  6638  // Transact invokes the (paid) contract method with params as input values.
  6639  func (_NameResolver *NameResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6640  	return _NameResolver.Contract.NameResolverTransactor.contract.Transact(opts, method, params...)
  6641  }
  6642  
  6643  // Call invokes the (constant) contract method with params as input values and
  6644  // sets the output to result. The result type might be a single field for simple
  6645  // returns, a slice of interfaces for anonymous returns and a struct for named
  6646  // returns.
  6647  func (_NameResolver *NameResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6648  	return _NameResolver.Contract.contract.Call(opts, result, method, params...)
  6649  }
  6650  
  6651  // Transfer initiates a plain transaction to move funds to the contract, calling
  6652  // its default method if one is available.
  6653  func (_NameResolver *NameResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6654  	return _NameResolver.Contract.contract.Transfer(opts)
  6655  }
  6656  
  6657  // Transact invokes the (paid) contract method with params as input values.
  6658  func (_NameResolver *NameResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6659  	return _NameResolver.Contract.contract.Transact(opts, method, params...)
  6660  }
  6661  
  6662  // Name is a free data retrieval call binding the contract method 0x691f3431.
  6663  //
  6664  // Solidity: function name(bytes32 node) view returns(string)
  6665  func (_NameResolver *NameResolverCaller) Name(opts *bind.CallOpts, node [32]byte) (string, error) {
  6666  	var out []interface{}
  6667  	err := _NameResolver.contract.Call(opts, &out, "name", node)
  6668  
  6669  	if err != nil {
  6670  		return *new(string), err
  6671  	}
  6672  
  6673  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  6674  
  6675  	return out0, err
  6676  
  6677  }
  6678  
  6679  // Name is a free data retrieval call binding the contract method 0x691f3431.
  6680  //
  6681  // Solidity: function name(bytes32 node) view returns(string)
  6682  func (_NameResolver *NameResolverSession) Name(node [32]byte) (string, error) {
  6683  	return _NameResolver.Contract.Name(&_NameResolver.CallOpts, node)
  6684  }
  6685  
  6686  // Name is a free data retrieval call binding the contract method 0x691f3431.
  6687  //
  6688  // Solidity: function name(bytes32 node) view returns(string)
  6689  func (_NameResolver *NameResolverCallerSession) Name(node [32]byte) (string, error) {
  6690  	return _NameResolver.Contract.Name(&_NameResolver.CallOpts, node)
  6691  }
  6692  
  6693  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6694  //
  6695  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  6696  func (_NameResolver *NameResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  6697  	var out []interface{}
  6698  	err := _NameResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  6699  
  6700  	if err != nil {
  6701  		return *new(bool), err
  6702  	}
  6703  
  6704  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6705  
  6706  	return out0, err
  6707  
  6708  }
  6709  
  6710  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6711  //
  6712  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  6713  func (_NameResolver *NameResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  6714  	return _NameResolver.Contract.SupportsInterface(&_NameResolver.CallOpts, interfaceID)
  6715  }
  6716  
  6717  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6718  //
  6719  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  6720  func (_NameResolver *NameResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  6721  	return _NameResolver.Contract.SupportsInterface(&_NameResolver.CallOpts, interfaceID)
  6722  }
  6723  
  6724  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  6725  //
  6726  // Solidity: function setName(bytes32 node, string name) returns()
  6727  func (_NameResolver *NameResolverTransactor) SetName(opts *bind.TransactOpts, node [32]byte, name string) (*types.Transaction, error) {
  6728  	return _NameResolver.contract.Transact(opts, "setName", node, name)
  6729  }
  6730  
  6731  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  6732  //
  6733  // Solidity: function setName(bytes32 node, string name) returns()
  6734  func (_NameResolver *NameResolverSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
  6735  	return _NameResolver.Contract.SetName(&_NameResolver.TransactOpts, node, name)
  6736  }
  6737  
  6738  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  6739  //
  6740  // Solidity: function setName(bytes32 node, string name) returns()
  6741  func (_NameResolver *NameResolverTransactorSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
  6742  	return _NameResolver.Contract.SetName(&_NameResolver.TransactOpts, node, name)
  6743  }
  6744  
  6745  // NameResolverNameChangedIterator is returned from FilterNameChanged and is used to iterate over the raw logs and unpacked data for NameChanged events raised by the NameResolver contract.
  6746  type NameResolverNameChangedIterator struct {
  6747  	Event *NameResolverNameChanged // Event containing the contract specifics and raw log
  6748  
  6749  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6750  	event    string              // Event name to use for unpacking event data
  6751  
  6752  	logs chan types.Log        // Log channel receiving the found contract events
  6753  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6754  	done bool                  // Whether the subscription completed delivering logs
  6755  	fail error                 // Occurred error to stop iteration
  6756  }
  6757  
  6758  // Next advances the iterator to the subsequent event, returning whether there
  6759  // are any more events found. In case of a retrieval or parsing error, false is
  6760  // returned and Error() can be queried for the exact failure.
  6761  func (it *NameResolverNameChangedIterator) Next() bool {
  6762  	// If the iterator failed, stop iterating
  6763  	if it.fail != nil {
  6764  		return false
  6765  	}
  6766  	// If the iterator completed, deliver directly whatever's available
  6767  	if it.done {
  6768  		select {
  6769  		case log := <-it.logs:
  6770  			it.Event = new(NameResolverNameChanged)
  6771  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6772  				it.fail = err
  6773  				return false
  6774  			}
  6775  			it.Event.Raw = log
  6776  			return true
  6777  
  6778  		default:
  6779  			return false
  6780  		}
  6781  	}
  6782  	// Iterator still in progress, wait for either a data or an error event
  6783  	select {
  6784  	case log := <-it.logs:
  6785  		it.Event = new(NameResolverNameChanged)
  6786  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6787  			it.fail = err
  6788  			return false
  6789  		}
  6790  		it.Event.Raw = log
  6791  		return true
  6792  
  6793  	case err := <-it.sub.Err():
  6794  		it.done = true
  6795  		it.fail = err
  6796  		return it.Next()
  6797  	}
  6798  }
  6799  
  6800  // Error returns any retrieval or parsing error occurred during filtering.
  6801  func (it *NameResolverNameChangedIterator) Error() error {
  6802  	return it.fail
  6803  }
  6804  
  6805  // Close terminates the iteration process, releasing any pending underlying
  6806  // resources.
  6807  func (it *NameResolverNameChangedIterator) Close() error {
  6808  	it.sub.Unsubscribe()
  6809  	return nil
  6810  }
  6811  
  6812  // NameResolverNameChanged represents a NameChanged event raised by the NameResolver contract.
  6813  type NameResolverNameChanged struct {
  6814  	Node [32]byte
  6815  	Name string
  6816  	Raw  types.Log // Blockchain specific contextual infos
  6817  }
  6818  
  6819  // FilterNameChanged is a free log retrieval operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  6820  //
  6821  // Solidity: event NameChanged(bytes32 indexed node, string name)
  6822  func (_NameResolver *NameResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node [][32]byte) (*NameResolverNameChangedIterator, error) {
  6823  
  6824  	var nodeRule []interface{}
  6825  	for _, nodeItem := range node {
  6826  		nodeRule = append(nodeRule, nodeItem)
  6827  	}
  6828  
  6829  	logs, sub, err := _NameResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
  6830  	if err != nil {
  6831  		return nil, err
  6832  	}
  6833  	return &NameResolverNameChangedIterator{contract: _NameResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  6834  }
  6835  
  6836  // WatchNameChanged is a free log subscription operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  6837  //
  6838  // Solidity: event NameChanged(bytes32 indexed node, string name)
  6839  func (_NameResolver *NameResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *NameResolverNameChanged, node [][32]byte) (event.Subscription, error) {
  6840  
  6841  	var nodeRule []interface{}
  6842  	for _, nodeItem := range node {
  6843  		nodeRule = append(nodeRule, nodeItem)
  6844  	}
  6845  
  6846  	logs, sub, err := _NameResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  6847  	if err != nil {
  6848  		return nil, err
  6849  	}
  6850  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6851  		defer sub.Unsubscribe()
  6852  		for {
  6853  			select {
  6854  			case log := <-logs:
  6855  				// New log arrived, parse the event and forward to the user
  6856  				event := new(NameResolverNameChanged)
  6857  				if err := _NameResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  6858  					return err
  6859  				}
  6860  				event.Raw = log
  6861  
  6862  				select {
  6863  				case sink <- event:
  6864  				case err := <-sub.Err():
  6865  					return err
  6866  				case <-quit:
  6867  					return nil
  6868  				}
  6869  			case err := <-sub.Err():
  6870  				return err
  6871  			case <-quit:
  6872  				return nil
  6873  			}
  6874  		}
  6875  	}), nil
  6876  }
  6877  
  6878  // ParseNameChanged is a log parse operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  6879  //
  6880  // Solidity: event NameChanged(bytes32 indexed node, string name)
  6881  func (_NameResolver *NameResolverFilterer) ParseNameChanged(log types.Log) (*NameResolverNameChanged, error) {
  6882  	event := new(NameResolverNameChanged)
  6883  	if err := _NameResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  6884  		return nil, err
  6885  	}
  6886  	event.Raw = log
  6887  	return event, nil
  6888  }
  6889  
  6890  // PubkeyResolverABI is the input ABI used to generate the binding from.
  6891  const PubkeyResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"}]"
  6892  
  6893  // PubkeyResolverFuncSigs maps the 4-byte function signature to its string representation.
  6894  var PubkeyResolverFuncSigs = map[string]string{
  6895  	"c8690233": "pubkey(bytes32)",
  6896  	"29cd62ea": "setPubkey(bytes32,bytes32,bytes32)",
  6897  	"01ffc9a7": "supportsInterface(bytes4)",
  6898  }
  6899  
  6900  // PubkeyResolver is an auto generated Go binding around an Ethereum contract.
  6901  type PubkeyResolver struct {
  6902  	PubkeyResolverCaller     // Read-only binding to the contract
  6903  	PubkeyResolverTransactor // Write-only binding to the contract
  6904  	PubkeyResolverFilterer   // Log filterer for contract events
  6905  }
  6906  
  6907  // PubkeyResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  6908  type PubkeyResolverCaller struct {
  6909  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6910  }
  6911  
  6912  // PubkeyResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6913  type PubkeyResolverTransactor struct {
  6914  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6915  }
  6916  
  6917  // PubkeyResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6918  type PubkeyResolverFilterer struct {
  6919  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6920  }
  6921  
  6922  // PubkeyResolverSession is an auto generated Go binding around an Ethereum contract,
  6923  // with pre-set call and transact options.
  6924  type PubkeyResolverSession struct {
  6925  	Contract     *PubkeyResolver   // Generic contract binding to set the session for
  6926  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6927  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6928  }
  6929  
  6930  // PubkeyResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6931  // with pre-set call options.
  6932  type PubkeyResolverCallerSession struct {
  6933  	Contract *PubkeyResolverCaller // Generic contract caller binding to set the session for
  6934  	CallOpts bind.CallOpts         // Call options to use throughout this session
  6935  }
  6936  
  6937  // PubkeyResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6938  // with pre-set transact options.
  6939  type PubkeyResolverTransactorSession struct {
  6940  	Contract     *PubkeyResolverTransactor // Generic contract transactor binding to set the session for
  6941  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  6942  }
  6943  
  6944  // PubkeyResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  6945  type PubkeyResolverRaw struct {
  6946  	Contract *PubkeyResolver // Generic contract binding to access the raw methods on
  6947  }
  6948  
  6949  // PubkeyResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6950  type PubkeyResolverCallerRaw struct {
  6951  	Contract *PubkeyResolverCaller // Generic read-only contract binding to access the raw methods on
  6952  }
  6953  
  6954  // PubkeyResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6955  type PubkeyResolverTransactorRaw struct {
  6956  	Contract *PubkeyResolverTransactor // Generic write-only contract binding to access the raw methods on
  6957  }
  6958  
  6959  // NewPubkeyResolver creates a new instance of PubkeyResolver, bound to a specific deployed contract.
  6960  func NewPubkeyResolver(address common.Address, backend bind.ContractBackend) (*PubkeyResolver, error) {
  6961  	contract, err := bindPubkeyResolver(address, backend, backend, backend)
  6962  	if err != nil {
  6963  		return nil, err
  6964  	}
  6965  	return &PubkeyResolver{PubkeyResolverCaller: PubkeyResolverCaller{contract: contract}, PubkeyResolverTransactor: PubkeyResolverTransactor{contract: contract}, PubkeyResolverFilterer: PubkeyResolverFilterer{contract: contract}}, nil
  6966  }
  6967  
  6968  // NewPubkeyResolverCaller creates a new read-only instance of PubkeyResolver, bound to a specific deployed contract.
  6969  func NewPubkeyResolverCaller(address common.Address, caller bind.ContractCaller) (*PubkeyResolverCaller, error) {
  6970  	contract, err := bindPubkeyResolver(address, caller, nil, nil)
  6971  	if err != nil {
  6972  		return nil, err
  6973  	}
  6974  	return &PubkeyResolverCaller{contract: contract}, nil
  6975  }
  6976  
  6977  // NewPubkeyResolverTransactor creates a new write-only instance of PubkeyResolver, bound to a specific deployed contract.
  6978  func NewPubkeyResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PubkeyResolverTransactor, error) {
  6979  	contract, err := bindPubkeyResolver(address, nil, transactor, nil)
  6980  	if err != nil {
  6981  		return nil, err
  6982  	}
  6983  	return &PubkeyResolverTransactor{contract: contract}, nil
  6984  }
  6985  
  6986  // NewPubkeyResolverFilterer creates a new log filterer instance of PubkeyResolver, bound to a specific deployed contract.
  6987  func NewPubkeyResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PubkeyResolverFilterer, error) {
  6988  	contract, err := bindPubkeyResolver(address, nil, nil, filterer)
  6989  	if err != nil {
  6990  		return nil, err
  6991  	}
  6992  	return &PubkeyResolverFilterer{contract: contract}, nil
  6993  }
  6994  
  6995  // bindPubkeyResolver binds a generic wrapper to an already deployed contract.
  6996  func bindPubkeyResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6997  	parsed, err := abi.JSON(strings.NewReader(PubkeyResolverABI))
  6998  	if err != nil {
  6999  		return nil, err
  7000  	}
  7001  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7002  }
  7003  
  7004  // Call invokes the (constant) contract method with params as input values and
  7005  // sets the output to result. The result type might be a single field for simple
  7006  // returns, a slice of interfaces for anonymous returns and a struct for named
  7007  // returns.
  7008  func (_PubkeyResolver *PubkeyResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7009  	return _PubkeyResolver.Contract.PubkeyResolverCaller.contract.Call(opts, result, method, params...)
  7010  }
  7011  
  7012  // Transfer initiates a plain transaction to move funds to the contract, calling
  7013  // its default method if one is available.
  7014  func (_PubkeyResolver *PubkeyResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7015  	return _PubkeyResolver.Contract.PubkeyResolverTransactor.contract.Transfer(opts)
  7016  }
  7017  
  7018  // Transact invokes the (paid) contract method with params as input values.
  7019  func (_PubkeyResolver *PubkeyResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7020  	return _PubkeyResolver.Contract.PubkeyResolverTransactor.contract.Transact(opts, method, params...)
  7021  }
  7022  
  7023  // Call invokes the (constant) contract method with params as input values and
  7024  // sets the output to result. The result type might be a single field for simple
  7025  // returns, a slice of interfaces for anonymous returns and a struct for named
  7026  // returns.
  7027  func (_PubkeyResolver *PubkeyResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7028  	return _PubkeyResolver.Contract.contract.Call(opts, result, method, params...)
  7029  }
  7030  
  7031  // Transfer initiates a plain transaction to move funds to the contract, calling
  7032  // its default method if one is available.
  7033  func (_PubkeyResolver *PubkeyResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7034  	return _PubkeyResolver.Contract.contract.Transfer(opts)
  7035  }
  7036  
  7037  // Transact invokes the (paid) contract method with params as input values.
  7038  func (_PubkeyResolver *PubkeyResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7039  	return _PubkeyResolver.Contract.contract.Transact(opts, method, params...)
  7040  }
  7041  
  7042  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7043  //
  7044  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7045  func (_PubkeyResolver *PubkeyResolverCaller) Pubkey(opts *bind.CallOpts, node [32]byte) (struct {
  7046  	X [32]byte
  7047  	Y [32]byte
  7048  }, error) {
  7049  	var out []interface{}
  7050  	err := _PubkeyResolver.contract.Call(opts, &out, "pubkey", node)
  7051  
  7052  	outstruct := new(struct {
  7053  		X [32]byte
  7054  		Y [32]byte
  7055  	})
  7056  	if err != nil {
  7057  		return *outstruct, err
  7058  	}
  7059  
  7060  	outstruct.X = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  7061  	outstruct.Y = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte)
  7062  
  7063  	return *outstruct, err
  7064  
  7065  }
  7066  
  7067  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7068  //
  7069  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7070  func (_PubkeyResolver *PubkeyResolverSession) Pubkey(node [32]byte) (struct {
  7071  	X [32]byte
  7072  	Y [32]byte
  7073  }, error) {
  7074  	return _PubkeyResolver.Contract.Pubkey(&_PubkeyResolver.CallOpts, node)
  7075  }
  7076  
  7077  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7078  //
  7079  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7080  func (_PubkeyResolver *PubkeyResolverCallerSession) Pubkey(node [32]byte) (struct {
  7081  	X [32]byte
  7082  	Y [32]byte
  7083  }, error) {
  7084  	return _PubkeyResolver.Contract.Pubkey(&_PubkeyResolver.CallOpts, node)
  7085  }
  7086  
  7087  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7088  //
  7089  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7090  func (_PubkeyResolver *PubkeyResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  7091  	var out []interface{}
  7092  	err := _PubkeyResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  7093  
  7094  	if err != nil {
  7095  		return *new(bool), err
  7096  	}
  7097  
  7098  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7099  
  7100  	return out0, err
  7101  
  7102  }
  7103  
  7104  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7105  //
  7106  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7107  func (_PubkeyResolver *PubkeyResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  7108  	return _PubkeyResolver.Contract.SupportsInterface(&_PubkeyResolver.CallOpts, interfaceID)
  7109  }
  7110  
  7111  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7112  //
  7113  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7114  func (_PubkeyResolver *PubkeyResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  7115  	return _PubkeyResolver.Contract.SupportsInterface(&_PubkeyResolver.CallOpts, interfaceID)
  7116  }
  7117  
  7118  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  7119  //
  7120  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  7121  func (_PubkeyResolver *PubkeyResolverTransactor) SetPubkey(opts *bind.TransactOpts, node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  7122  	return _PubkeyResolver.contract.Transact(opts, "setPubkey", node, x, y)
  7123  }
  7124  
  7125  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  7126  //
  7127  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  7128  func (_PubkeyResolver *PubkeyResolverSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  7129  	return _PubkeyResolver.Contract.SetPubkey(&_PubkeyResolver.TransactOpts, node, x, y)
  7130  }
  7131  
  7132  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  7133  //
  7134  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  7135  func (_PubkeyResolver *PubkeyResolverTransactorSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  7136  	return _PubkeyResolver.Contract.SetPubkey(&_PubkeyResolver.TransactOpts, node, x, y)
  7137  }
  7138  
  7139  // PubkeyResolverPubkeyChangedIterator is returned from FilterPubkeyChanged and is used to iterate over the raw logs and unpacked data for PubkeyChanged events raised by the PubkeyResolver contract.
  7140  type PubkeyResolverPubkeyChangedIterator struct {
  7141  	Event *PubkeyResolverPubkeyChanged // Event containing the contract specifics and raw log
  7142  
  7143  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7144  	event    string              // Event name to use for unpacking event data
  7145  
  7146  	logs chan types.Log        // Log channel receiving the found contract events
  7147  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7148  	done bool                  // Whether the subscription completed delivering logs
  7149  	fail error                 // Occurred error to stop iteration
  7150  }
  7151  
  7152  // Next advances the iterator to the subsequent event, returning whether there
  7153  // are any more events found. In case of a retrieval or parsing error, false is
  7154  // returned and Error() can be queried for the exact failure.
  7155  func (it *PubkeyResolverPubkeyChangedIterator) Next() bool {
  7156  	// If the iterator failed, stop iterating
  7157  	if it.fail != nil {
  7158  		return false
  7159  	}
  7160  	// If the iterator completed, deliver directly whatever's available
  7161  	if it.done {
  7162  		select {
  7163  		case log := <-it.logs:
  7164  			it.Event = new(PubkeyResolverPubkeyChanged)
  7165  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7166  				it.fail = err
  7167  				return false
  7168  			}
  7169  			it.Event.Raw = log
  7170  			return true
  7171  
  7172  		default:
  7173  			return false
  7174  		}
  7175  	}
  7176  	// Iterator still in progress, wait for either a data or an error event
  7177  	select {
  7178  	case log := <-it.logs:
  7179  		it.Event = new(PubkeyResolverPubkeyChanged)
  7180  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7181  			it.fail = err
  7182  			return false
  7183  		}
  7184  		it.Event.Raw = log
  7185  		return true
  7186  
  7187  	case err := <-it.sub.Err():
  7188  		it.done = true
  7189  		it.fail = err
  7190  		return it.Next()
  7191  	}
  7192  }
  7193  
  7194  // Error returns any retrieval or parsing error occurred during filtering.
  7195  func (it *PubkeyResolverPubkeyChangedIterator) Error() error {
  7196  	return it.fail
  7197  }
  7198  
  7199  // Close terminates the iteration process, releasing any pending underlying
  7200  // resources.
  7201  func (it *PubkeyResolverPubkeyChangedIterator) Close() error {
  7202  	it.sub.Unsubscribe()
  7203  	return nil
  7204  }
  7205  
  7206  // PubkeyResolverPubkeyChanged represents a PubkeyChanged event raised by the PubkeyResolver contract.
  7207  type PubkeyResolverPubkeyChanged struct {
  7208  	Node [32]byte
  7209  	X    [32]byte
  7210  	Y    [32]byte
  7211  	Raw  types.Log // Blockchain specific contextual infos
  7212  }
  7213  
  7214  // FilterPubkeyChanged is a free log retrieval operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  7215  //
  7216  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  7217  func (_PubkeyResolver *PubkeyResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node [][32]byte) (*PubkeyResolverPubkeyChangedIterator, error) {
  7218  
  7219  	var nodeRule []interface{}
  7220  	for _, nodeItem := range node {
  7221  		nodeRule = append(nodeRule, nodeItem)
  7222  	}
  7223  
  7224  	logs, sub, err := _PubkeyResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  7225  	if err != nil {
  7226  		return nil, err
  7227  	}
  7228  	return &PubkeyResolverPubkeyChangedIterator{contract: _PubkeyResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  7229  }
  7230  
  7231  // WatchPubkeyChanged is a free log subscription operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  7232  //
  7233  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  7234  func (_PubkeyResolver *PubkeyResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PubkeyResolverPubkeyChanged, node [][32]byte) (event.Subscription, error) {
  7235  
  7236  	var nodeRule []interface{}
  7237  	for _, nodeItem := range node {
  7238  		nodeRule = append(nodeRule, nodeItem)
  7239  	}
  7240  
  7241  	logs, sub, err := _PubkeyResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  7242  	if err != nil {
  7243  		return nil, err
  7244  	}
  7245  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7246  		defer sub.Unsubscribe()
  7247  		for {
  7248  			select {
  7249  			case log := <-logs:
  7250  				// New log arrived, parse the event and forward to the user
  7251  				event := new(PubkeyResolverPubkeyChanged)
  7252  				if err := _PubkeyResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  7253  					return err
  7254  				}
  7255  				event.Raw = log
  7256  
  7257  				select {
  7258  				case sink <- event:
  7259  				case err := <-sub.Err():
  7260  					return err
  7261  				case <-quit:
  7262  					return nil
  7263  				}
  7264  			case err := <-sub.Err():
  7265  				return err
  7266  			case <-quit:
  7267  				return nil
  7268  			}
  7269  		}
  7270  	}), nil
  7271  }
  7272  
  7273  // ParsePubkeyChanged is a log parse operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  7274  //
  7275  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  7276  func (_PubkeyResolver *PubkeyResolverFilterer) ParsePubkeyChanged(log types.Log) (*PubkeyResolverPubkeyChanged, error) {
  7277  	event := new(PubkeyResolverPubkeyChanged)
  7278  	if err := _PubkeyResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  7279  		return nil, err
  7280  	}
  7281  	event.Raw = log
  7282  	return event, nil
  7283  }
  7284  
  7285  // PublicResolverABI is the input ABI used to generate the binding from.
  7286  const PublicResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"isAuthorised\",\"type\":\"bool\"}],\"name\":\"setAuthorisation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"},{\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"},{\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"name\":\"results\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearDNSZone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorisations\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"isAuthorised\",\"type\":\"bool\"}],\"name\":\"AuthorisationChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"DNSZoneCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"}]"
  7287  
  7288  // PublicResolverFuncSigs maps the 4-byte function signature to its string representation.
  7289  var PublicResolverFuncSigs = map[string]string{
  7290  	"2203ab56": "ABI(bytes32,uint256)",
  7291  	"3b3b57de": "addr(bytes32)",
  7292  	"f1cb7e06": "addr(bytes32,uint256)",
  7293  	"f86bc879": "authorisations(bytes32,address,address)",
  7294  	"ad5780af": "clearDNSZone(bytes32)",
  7295  	"bc1c58d1": "contenthash(bytes32)",
  7296  	"a8fa5682": "dnsRecord(bytes32,bytes32,uint16)",
  7297  	"4cbf6ba4": "hasDNSRecords(bytes32,bytes32)",
  7298  	"124a319c": "interfaceImplementer(bytes32,bytes4)",
  7299  	"ac9650d8": "multicall(bytes[])",
  7300  	"691f3431": "name(bytes32)",
  7301  	"c8690233": "pubkey(bytes32)",
  7302  	"623195b0": "setABI(bytes32,uint256,bytes)",
  7303  	"d5fa2b00": "setAddr(bytes32,address)",
  7304  	"8b95dd71": "setAddr(bytes32,uint256,bytes)",
  7305  	"3e9ce794": "setAuthorisation(bytes32,address,bool)",
  7306  	"304e6ade": "setContenthash(bytes32,bytes)",
  7307  	"0af179d7": "setDNSRecords(bytes32,bytes)",
  7308  	"e59d895d": "setInterface(bytes32,bytes4,address)",
  7309  	"77372213": "setName(bytes32,string)",
  7310  	"29cd62ea": "setPubkey(bytes32,bytes32,bytes32)",
  7311  	"10f13a8c": "setText(bytes32,string,string)",
  7312  	"01ffc9a7": "supportsInterface(bytes4)",
  7313  	"59d1d43c": "text(bytes32,string)",
  7314  }
  7315  
  7316  // PublicResolver is an auto generated Go binding around an Ethereum contract.
  7317  type PublicResolver struct {
  7318  	PublicResolverCaller     // Read-only binding to the contract
  7319  	PublicResolverTransactor // Write-only binding to the contract
  7320  	PublicResolverFilterer   // Log filterer for contract events
  7321  }
  7322  
  7323  // PublicResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
  7324  type PublicResolverCaller struct {
  7325  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7326  }
  7327  
  7328  // PublicResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7329  type PublicResolverTransactor struct {
  7330  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7331  }
  7332  
  7333  // PublicResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7334  type PublicResolverFilterer struct {
  7335  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7336  }
  7337  
  7338  // PublicResolverSession is an auto generated Go binding around an Ethereum contract,
  7339  // with pre-set call and transact options.
  7340  type PublicResolverSession struct {
  7341  	Contract     *PublicResolver   // Generic contract binding to set the session for
  7342  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7343  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7344  }
  7345  
  7346  // PublicResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7347  // with pre-set call options.
  7348  type PublicResolverCallerSession struct {
  7349  	Contract *PublicResolverCaller // Generic contract caller binding to set the session for
  7350  	CallOpts bind.CallOpts         // Call options to use throughout this session
  7351  }
  7352  
  7353  // PublicResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7354  // with pre-set transact options.
  7355  type PublicResolverTransactorSession struct {
  7356  	Contract     *PublicResolverTransactor // Generic contract transactor binding to set the session for
  7357  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  7358  }
  7359  
  7360  // PublicResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
  7361  type PublicResolverRaw struct {
  7362  	Contract *PublicResolver // Generic contract binding to access the raw methods on
  7363  }
  7364  
  7365  // PublicResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7366  type PublicResolverCallerRaw struct {
  7367  	Contract *PublicResolverCaller // Generic read-only contract binding to access the raw methods on
  7368  }
  7369  
  7370  // PublicResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7371  type PublicResolverTransactorRaw struct {
  7372  	Contract *PublicResolverTransactor // Generic write-only contract binding to access the raw methods on
  7373  }
  7374  
  7375  // NewPublicResolver creates a new instance of PublicResolver, bound to a specific deployed contract.
  7376  func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
  7377  	contract, err := bindPublicResolver(address, backend, backend, backend)
  7378  	if err != nil {
  7379  		return nil, err
  7380  	}
  7381  	return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
  7382  }
  7383  
  7384  // NewPublicResolverCaller creates a new read-only instance of PublicResolver, bound to a specific deployed contract.
  7385  func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
  7386  	contract, err := bindPublicResolver(address, caller, nil, nil)
  7387  	if err != nil {
  7388  		return nil, err
  7389  	}
  7390  	return &PublicResolverCaller{contract: contract}, nil
  7391  }
  7392  
  7393  // NewPublicResolverTransactor creates a new write-only instance of PublicResolver, bound to a specific deployed contract.
  7394  func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
  7395  	contract, err := bindPublicResolver(address, nil, transactor, nil)
  7396  	if err != nil {
  7397  		return nil, err
  7398  	}
  7399  	return &PublicResolverTransactor{contract: contract}, nil
  7400  }
  7401  
  7402  // NewPublicResolverFilterer creates a new log filterer instance of PublicResolver, bound to a specific deployed contract.
  7403  func NewPublicResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PublicResolverFilterer, error) {
  7404  	contract, err := bindPublicResolver(address, nil, nil, filterer)
  7405  	if err != nil {
  7406  		return nil, err
  7407  	}
  7408  	return &PublicResolverFilterer{contract: contract}, nil
  7409  }
  7410  
  7411  // bindPublicResolver binds a generic wrapper to an already deployed contract.
  7412  func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7413  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
  7414  	if err != nil {
  7415  		return nil, err
  7416  	}
  7417  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7418  }
  7419  
  7420  // Call invokes the (constant) contract method with params as input values and
  7421  // sets the output to result. The result type might be a single field for simple
  7422  // returns, a slice of interfaces for anonymous returns and a struct for named
  7423  // returns.
  7424  func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7425  	return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
  7426  }
  7427  
  7428  // Transfer initiates a plain transaction to move funds to the contract, calling
  7429  // its default method if one is available.
  7430  func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7431  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
  7432  }
  7433  
  7434  // Transact invokes the (paid) contract method with params as input values.
  7435  func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7436  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
  7437  }
  7438  
  7439  // Call invokes the (constant) contract method with params as input values and
  7440  // sets the output to result. The result type might be a single field for simple
  7441  // returns, a slice of interfaces for anonymous returns and a struct for named
  7442  // returns.
  7443  func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7444  	return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
  7445  }
  7446  
  7447  // Transfer initiates a plain transaction to move funds to the contract, calling
  7448  // its default method if one is available.
  7449  func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7450  	return _PublicResolver.Contract.contract.Transfer(opts)
  7451  }
  7452  
  7453  // Transact invokes the (paid) contract method with params as input values.
  7454  func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7455  	return _PublicResolver.Contract.contract.Transact(opts, method, params...)
  7456  }
  7457  
  7458  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
  7459  //
  7460  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
  7461  func (_PublicResolver *PublicResolverCaller) ABI(opts *bind.CallOpts, node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
  7462  	var out []interface{}
  7463  	err := _PublicResolver.contract.Call(opts, &out, "ABI", node, contentTypes)
  7464  
  7465  	if err != nil {
  7466  		return *new(*big.Int), *new([]byte), err
  7467  	}
  7468  
  7469  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  7470  	out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte)
  7471  
  7472  	return out0, out1, err
  7473  
  7474  }
  7475  
  7476  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
  7477  //
  7478  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
  7479  func (_PublicResolver *PublicResolverSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
  7480  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
  7481  }
  7482  
  7483  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
  7484  //
  7485  // Solidity: function ABI(bytes32 node, uint256 contentTypes) view returns(uint256, bytes)
  7486  func (_PublicResolver *PublicResolverCallerSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
  7487  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
  7488  }
  7489  
  7490  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  7491  //
  7492  // Solidity: function addr(bytes32 node) view returns(address)
  7493  func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
  7494  	var out []interface{}
  7495  	err := _PublicResolver.contract.Call(opts, &out, "addr", node)
  7496  
  7497  	if err != nil {
  7498  		return *new(common.Address), err
  7499  	}
  7500  
  7501  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7502  
  7503  	return out0, err
  7504  
  7505  }
  7506  
  7507  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  7508  //
  7509  // Solidity: function addr(bytes32 node) view returns(address)
  7510  func (_PublicResolver *PublicResolverSession) Addr(node [32]byte) (common.Address, error) {
  7511  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
  7512  }
  7513  
  7514  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
  7515  //
  7516  // Solidity: function addr(bytes32 node) view returns(address)
  7517  func (_PublicResolver *PublicResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
  7518  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
  7519  }
  7520  
  7521  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  7522  //
  7523  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  7524  func (_PublicResolver *PublicResolverCaller) Addr0(opts *bind.CallOpts, node [32]byte, coinType *big.Int) ([]byte, error) {
  7525  	var out []interface{}
  7526  	err := _PublicResolver.contract.Call(opts, &out, "addr0", node, coinType)
  7527  
  7528  	if err != nil {
  7529  		return *new([]byte), err
  7530  	}
  7531  
  7532  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  7533  
  7534  	return out0, err
  7535  
  7536  }
  7537  
  7538  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  7539  //
  7540  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  7541  func (_PublicResolver *PublicResolverSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
  7542  	return _PublicResolver.Contract.Addr0(&_PublicResolver.CallOpts, node, coinType)
  7543  }
  7544  
  7545  // Addr0 is a free data retrieval call binding the contract method 0xf1cb7e06.
  7546  //
  7547  // Solidity: function addr(bytes32 node, uint256 coinType) view returns(bytes)
  7548  func (_PublicResolver *PublicResolverCallerSession) Addr0(node [32]byte, coinType *big.Int) ([]byte, error) {
  7549  	return _PublicResolver.Contract.Addr0(&_PublicResolver.CallOpts, node, coinType)
  7550  }
  7551  
  7552  // Authorisations is a free data retrieval call binding the contract method 0xf86bc879.
  7553  //
  7554  // Solidity: function authorisations(bytes32 , address , address ) view returns(bool)
  7555  func (_PublicResolver *PublicResolverCaller) Authorisations(opts *bind.CallOpts, arg0 [32]byte, arg1 common.Address, arg2 common.Address) (bool, error) {
  7556  	var out []interface{}
  7557  	err := _PublicResolver.contract.Call(opts, &out, "authorisations", arg0, arg1, arg2)
  7558  
  7559  	if err != nil {
  7560  		return *new(bool), err
  7561  	}
  7562  
  7563  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7564  
  7565  	return out0, err
  7566  
  7567  }
  7568  
  7569  // Authorisations is a free data retrieval call binding the contract method 0xf86bc879.
  7570  //
  7571  // Solidity: function authorisations(bytes32 , address , address ) view returns(bool)
  7572  func (_PublicResolver *PublicResolverSession) Authorisations(arg0 [32]byte, arg1 common.Address, arg2 common.Address) (bool, error) {
  7573  	return _PublicResolver.Contract.Authorisations(&_PublicResolver.CallOpts, arg0, arg1, arg2)
  7574  }
  7575  
  7576  // Authorisations is a free data retrieval call binding the contract method 0xf86bc879.
  7577  //
  7578  // Solidity: function authorisations(bytes32 , address , address ) view returns(bool)
  7579  func (_PublicResolver *PublicResolverCallerSession) Authorisations(arg0 [32]byte, arg1 common.Address, arg2 common.Address) (bool, error) {
  7580  	return _PublicResolver.Contract.Authorisations(&_PublicResolver.CallOpts, arg0, arg1, arg2)
  7581  }
  7582  
  7583  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  7584  //
  7585  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  7586  func (_PublicResolver *PublicResolverCaller) Contenthash(opts *bind.CallOpts, node [32]byte) ([]byte, error) {
  7587  	var out []interface{}
  7588  	err := _PublicResolver.contract.Call(opts, &out, "contenthash", node)
  7589  
  7590  	if err != nil {
  7591  		return *new([]byte), err
  7592  	}
  7593  
  7594  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  7595  
  7596  	return out0, err
  7597  
  7598  }
  7599  
  7600  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  7601  //
  7602  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  7603  func (_PublicResolver *PublicResolverSession) Contenthash(node [32]byte) ([]byte, error) {
  7604  	return _PublicResolver.Contract.Contenthash(&_PublicResolver.CallOpts, node)
  7605  }
  7606  
  7607  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
  7608  //
  7609  // Solidity: function contenthash(bytes32 node) view returns(bytes)
  7610  func (_PublicResolver *PublicResolverCallerSession) Contenthash(node [32]byte) ([]byte, error) {
  7611  	return _PublicResolver.Contract.Contenthash(&_PublicResolver.CallOpts, node)
  7612  }
  7613  
  7614  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  7615  //
  7616  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  7617  func (_PublicResolver *PublicResolverCaller) DnsRecord(opts *bind.CallOpts, node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  7618  	var out []interface{}
  7619  	err := _PublicResolver.contract.Call(opts, &out, "dnsRecord", node, name, resource)
  7620  
  7621  	if err != nil {
  7622  		return *new([]byte), err
  7623  	}
  7624  
  7625  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
  7626  
  7627  	return out0, err
  7628  
  7629  }
  7630  
  7631  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  7632  //
  7633  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  7634  func (_PublicResolver *PublicResolverSession) DnsRecord(node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  7635  	return _PublicResolver.Contract.DnsRecord(&_PublicResolver.CallOpts, node, name, resource)
  7636  }
  7637  
  7638  // DnsRecord is a free data retrieval call binding the contract method 0xa8fa5682.
  7639  //
  7640  // Solidity: function dnsRecord(bytes32 node, bytes32 name, uint16 resource) view returns(bytes)
  7641  func (_PublicResolver *PublicResolverCallerSession) DnsRecord(node [32]byte, name [32]byte, resource uint16) ([]byte, error) {
  7642  	return _PublicResolver.Contract.DnsRecord(&_PublicResolver.CallOpts, node, name, resource)
  7643  }
  7644  
  7645  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  7646  //
  7647  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  7648  func (_PublicResolver *PublicResolverCaller) HasDNSRecords(opts *bind.CallOpts, node [32]byte, name [32]byte) (bool, error) {
  7649  	var out []interface{}
  7650  	err := _PublicResolver.contract.Call(opts, &out, "hasDNSRecords", node, name)
  7651  
  7652  	if err != nil {
  7653  		return *new(bool), err
  7654  	}
  7655  
  7656  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7657  
  7658  	return out0, err
  7659  
  7660  }
  7661  
  7662  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  7663  //
  7664  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  7665  func (_PublicResolver *PublicResolverSession) HasDNSRecords(node [32]byte, name [32]byte) (bool, error) {
  7666  	return _PublicResolver.Contract.HasDNSRecords(&_PublicResolver.CallOpts, node, name)
  7667  }
  7668  
  7669  // HasDNSRecords is a free data retrieval call binding the contract method 0x4cbf6ba4.
  7670  //
  7671  // Solidity: function hasDNSRecords(bytes32 node, bytes32 name) view returns(bool)
  7672  func (_PublicResolver *PublicResolverCallerSession) HasDNSRecords(node [32]byte, name [32]byte) (bool, error) {
  7673  	return _PublicResolver.Contract.HasDNSRecords(&_PublicResolver.CallOpts, node, name)
  7674  }
  7675  
  7676  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  7677  //
  7678  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  7679  func (_PublicResolver *PublicResolverCaller) InterfaceImplementer(opts *bind.CallOpts, node [32]byte, interfaceID [4]byte) (common.Address, error) {
  7680  	var out []interface{}
  7681  	err := _PublicResolver.contract.Call(opts, &out, "interfaceImplementer", node, interfaceID)
  7682  
  7683  	if err != nil {
  7684  		return *new(common.Address), err
  7685  	}
  7686  
  7687  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7688  
  7689  	return out0, err
  7690  
  7691  }
  7692  
  7693  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  7694  //
  7695  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  7696  func (_PublicResolver *PublicResolverSession) InterfaceImplementer(node [32]byte, interfaceID [4]byte) (common.Address, error) {
  7697  	return _PublicResolver.Contract.InterfaceImplementer(&_PublicResolver.CallOpts, node, interfaceID)
  7698  }
  7699  
  7700  // InterfaceImplementer is a free data retrieval call binding the contract method 0x124a319c.
  7701  //
  7702  // Solidity: function interfaceImplementer(bytes32 node, bytes4 interfaceID) view returns(address)
  7703  func (_PublicResolver *PublicResolverCallerSession) InterfaceImplementer(node [32]byte, interfaceID [4]byte) (common.Address, error) {
  7704  	return _PublicResolver.Contract.InterfaceImplementer(&_PublicResolver.CallOpts, node, interfaceID)
  7705  }
  7706  
  7707  // Name is a free data retrieval call binding the contract method 0x691f3431.
  7708  //
  7709  // Solidity: function name(bytes32 node) view returns(string)
  7710  func (_PublicResolver *PublicResolverCaller) Name(opts *bind.CallOpts, node [32]byte) (string, error) {
  7711  	var out []interface{}
  7712  	err := _PublicResolver.contract.Call(opts, &out, "name", node)
  7713  
  7714  	if err != nil {
  7715  		return *new(string), err
  7716  	}
  7717  
  7718  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  7719  
  7720  	return out0, err
  7721  
  7722  }
  7723  
  7724  // Name is a free data retrieval call binding the contract method 0x691f3431.
  7725  //
  7726  // Solidity: function name(bytes32 node) view returns(string)
  7727  func (_PublicResolver *PublicResolverSession) Name(node [32]byte) (string, error) {
  7728  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
  7729  }
  7730  
  7731  // Name is a free data retrieval call binding the contract method 0x691f3431.
  7732  //
  7733  // Solidity: function name(bytes32 node) view returns(string)
  7734  func (_PublicResolver *PublicResolverCallerSession) Name(node [32]byte) (string, error) {
  7735  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
  7736  }
  7737  
  7738  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7739  //
  7740  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7741  func (_PublicResolver *PublicResolverCaller) Pubkey(opts *bind.CallOpts, node [32]byte) (struct {
  7742  	X [32]byte
  7743  	Y [32]byte
  7744  }, error) {
  7745  	var out []interface{}
  7746  	err := _PublicResolver.contract.Call(opts, &out, "pubkey", node)
  7747  
  7748  	outstruct := new(struct {
  7749  		X [32]byte
  7750  		Y [32]byte
  7751  	})
  7752  	if err != nil {
  7753  		return *outstruct, err
  7754  	}
  7755  
  7756  	outstruct.X = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  7757  	outstruct.Y = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte)
  7758  
  7759  	return *outstruct, err
  7760  
  7761  }
  7762  
  7763  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7764  //
  7765  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7766  func (_PublicResolver *PublicResolverSession) Pubkey(node [32]byte) (struct {
  7767  	X [32]byte
  7768  	Y [32]byte
  7769  }, error) {
  7770  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
  7771  }
  7772  
  7773  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
  7774  //
  7775  // Solidity: function pubkey(bytes32 node) view returns(bytes32 x, bytes32 y)
  7776  func (_PublicResolver *PublicResolverCallerSession) Pubkey(node [32]byte) (struct {
  7777  	X [32]byte
  7778  	Y [32]byte
  7779  }, error) {
  7780  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
  7781  }
  7782  
  7783  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7784  //
  7785  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7786  func (_PublicResolver *PublicResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
  7787  	var out []interface{}
  7788  	err := _PublicResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
  7789  
  7790  	if err != nil {
  7791  		return *new(bool), err
  7792  	}
  7793  
  7794  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7795  
  7796  	return out0, err
  7797  
  7798  }
  7799  
  7800  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7801  //
  7802  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7803  func (_PublicResolver *PublicResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  7804  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
  7805  }
  7806  
  7807  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7808  //
  7809  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
  7810  func (_PublicResolver *PublicResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
  7811  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
  7812  }
  7813  
  7814  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
  7815  //
  7816  // Solidity: function text(bytes32 node, string key) view returns(string)
  7817  func (_PublicResolver *PublicResolverCaller) Text(opts *bind.CallOpts, node [32]byte, key string) (string, error) {
  7818  	var out []interface{}
  7819  	err := _PublicResolver.contract.Call(opts, &out, "text", node, key)
  7820  
  7821  	if err != nil {
  7822  		return *new(string), err
  7823  	}
  7824  
  7825  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  7826  
  7827  	return out0, err
  7828  
  7829  }
  7830  
  7831  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
  7832  //
  7833  // Solidity: function text(bytes32 node, string key) view returns(string)
  7834  func (_PublicResolver *PublicResolverSession) Text(node [32]byte, key string) (string, error) {
  7835  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
  7836  }
  7837  
  7838  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
  7839  //
  7840  // Solidity: function text(bytes32 node, string key) view returns(string)
  7841  func (_PublicResolver *PublicResolverCallerSession) Text(node [32]byte, key string) (string, error) {
  7842  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
  7843  }
  7844  
  7845  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  7846  //
  7847  // Solidity: function clearDNSZone(bytes32 node) returns()
  7848  func (_PublicResolver *PublicResolverTransactor) ClearDNSZone(opts *bind.TransactOpts, node [32]byte) (*types.Transaction, error) {
  7849  	return _PublicResolver.contract.Transact(opts, "clearDNSZone", node)
  7850  }
  7851  
  7852  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  7853  //
  7854  // Solidity: function clearDNSZone(bytes32 node) returns()
  7855  func (_PublicResolver *PublicResolverSession) ClearDNSZone(node [32]byte) (*types.Transaction, error) {
  7856  	return _PublicResolver.Contract.ClearDNSZone(&_PublicResolver.TransactOpts, node)
  7857  }
  7858  
  7859  // ClearDNSZone is a paid mutator transaction binding the contract method 0xad5780af.
  7860  //
  7861  // Solidity: function clearDNSZone(bytes32 node) returns()
  7862  func (_PublicResolver *PublicResolverTransactorSession) ClearDNSZone(node [32]byte) (*types.Transaction, error) {
  7863  	return _PublicResolver.Contract.ClearDNSZone(&_PublicResolver.TransactOpts, node)
  7864  }
  7865  
  7866  // Multicall is a paid mutator transaction binding the contract method 0xac9650d8.
  7867  //
  7868  // Solidity: function multicall(bytes[] data) returns(bytes[] results)
  7869  func (_PublicResolver *PublicResolverTransactor) Multicall(opts *bind.TransactOpts, data [][]byte) (*types.Transaction, error) {
  7870  	return _PublicResolver.contract.Transact(opts, "multicall", data)
  7871  }
  7872  
  7873  // Multicall is a paid mutator transaction binding the contract method 0xac9650d8.
  7874  //
  7875  // Solidity: function multicall(bytes[] data) returns(bytes[] results)
  7876  func (_PublicResolver *PublicResolverSession) Multicall(data [][]byte) (*types.Transaction, error) {
  7877  	return _PublicResolver.Contract.Multicall(&_PublicResolver.TransactOpts, data)
  7878  }
  7879  
  7880  // Multicall is a paid mutator transaction binding the contract method 0xac9650d8.
  7881  //
  7882  // Solidity: function multicall(bytes[] data) returns(bytes[] results)
  7883  func (_PublicResolver *PublicResolverTransactorSession) Multicall(data [][]byte) (*types.Transaction, error) {
  7884  	return _PublicResolver.Contract.Multicall(&_PublicResolver.TransactOpts, data)
  7885  }
  7886  
  7887  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
  7888  //
  7889  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
  7890  func (_PublicResolver *PublicResolverTransactor) SetABI(opts *bind.TransactOpts, node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
  7891  	return _PublicResolver.contract.Transact(opts, "setABI", node, contentType, data)
  7892  }
  7893  
  7894  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
  7895  //
  7896  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
  7897  func (_PublicResolver *PublicResolverSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
  7898  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
  7899  }
  7900  
  7901  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
  7902  //
  7903  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
  7904  func (_PublicResolver *PublicResolverTransactorSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
  7905  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
  7906  }
  7907  
  7908  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  7909  //
  7910  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  7911  func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  7912  	return _PublicResolver.contract.Transact(opts, "setAddr", node, coinType, a)
  7913  }
  7914  
  7915  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  7916  //
  7917  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  7918  func (_PublicResolver *PublicResolverSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  7919  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, coinType, a)
  7920  }
  7921  
  7922  // SetAddr is a paid mutator transaction binding the contract method 0x8b95dd71.
  7923  //
  7924  // Solidity: function setAddr(bytes32 node, uint256 coinType, bytes a) returns()
  7925  func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node [32]byte, coinType *big.Int, a []byte) (*types.Transaction, error) {
  7926  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, coinType, a)
  7927  }
  7928  
  7929  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  7930  //
  7931  // Solidity: function setAddr(bytes32 node, address a) returns()
  7932  func (_PublicResolver *PublicResolverTransactor) SetAddr0(opts *bind.TransactOpts, node [32]byte, a common.Address) (*types.Transaction, error) {
  7933  	return _PublicResolver.contract.Transact(opts, "setAddr0", node, a)
  7934  }
  7935  
  7936  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  7937  //
  7938  // Solidity: function setAddr(bytes32 node, address a) returns()
  7939  func (_PublicResolver *PublicResolverSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
  7940  	return _PublicResolver.Contract.SetAddr0(&_PublicResolver.TransactOpts, node, a)
  7941  }
  7942  
  7943  // SetAddr0 is a paid mutator transaction binding the contract method 0xd5fa2b00.
  7944  //
  7945  // Solidity: function setAddr(bytes32 node, address a) returns()
  7946  func (_PublicResolver *PublicResolverTransactorSession) SetAddr0(node [32]byte, a common.Address) (*types.Transaction, error) {
  7947  	return _PublicResolver.Contract.SetAddr0(&_PublicResolver.TransactOpts, node, a)
  7948  }
  7949  
  7950  // SetAuthorisation is a paid mutator transaction binding the contract method 0x3e9ce794.
  7951  //
  7952  // Solidity: function setAuthorisation(bytes32 node, address target, bool isAuthorised) returns()
  7953  func (_PublicResolver *PublicResolverTransactor) SetAuthorisation(opts *bind.TransactOpts, node [32]byte, target common.Address, isAuthorised bool) (*types.Transaction, error) {
  7954  	return _PublicResolver.contract.Transact(opts, "setAuthorisation", node, target, isAuthorised)
  7955  }
  7956  
  7957  // SetAuthorisation is a paid mutator transaction binding the contract method 0x3e9ce794.
  7958  //
  7959  // Solidity: function setAuthorisation(bytes32 node, address target, bool isAuthorised) returns()
  7960  func (_PublicResolver *PublicResolverSession) SetAuthorisation(node [32]byte, target common.Address, isAuthorised bool) (*types.Transaction, error) {
  7961  	return _PublicResolver.Contract.SetAuthorisation(&_PublicResolver.TransactOpts, node, target, isAuthorised)
  7962  }
  7963  
  7964  // SetAuthorisation is a paid mutator transaction binding the contract method 0x3e9ce794.
  7965  //
  7966  // Solidity: function setAuthorisation(bytes32 node, address target, bool isAuthorised) returns()
  7967  func (_PublicResolver *PublicResolverTransactorSession) SetAuthorisation(node [32]byte, target common.Address, isAuthorised bool) (*types.Transaction, error) {
  7968  	return _PublicResolver.Contract.SetAuthorisation(&_PublicResolver.TransactOpts, node, target, isAuthorised)
  7969  }
  7970  
  7971  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  7972  //
  7973  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  7974  func (_PublicResolver *PublicResolverTransactor) SetContenthash(opts *bind.TransactOpts, node [32]byte, hash []byte) (*types.Transaction, error) {
  7975  	return _PublicResolver.contract.Transact(opts, "setContenthash", node, hash)
  7976  }
  7977  
  7978  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  7979  //
  7980  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  7981  func (_PublicResolver *PublicResolverSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
  7982  	return _PublicResolver.Contract.SetContenthash(&_PublicResolver.TransactOpts, node, hash)
  7983  }
  7984  
  7985  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
  7986  //
  7987  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
  7988  func (_PublicResolver *PublicResolverTransactorSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
  7989  	return _PublicResolver.Contract.SetContenthash(&_PublicResolver.TransactOpts, node, hash)
  7990  }
  7991  
  7992  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  7993  //
  7994  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  7995  func (_PublicResolver *PublicResolverTransactor) SetDNSRecords(opts *bind.TransactOpts, node [32]byte, data []byte) (*types.Transaction, error) {
  7996  	return _PublicResolver.contract.Transact(opts, "setDNSRecords", node, data)
  7997  }
  7998  
  7999  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  8000  //
  8001  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  8002  func (_PublicResolver *PublicResolverSession) SetDNSRecords(node [32]byte, data []byte) (*types.Transaction, error) {
  8003  	return _PublicResolver.Contract.SetDNSRecords(&_PublicResolver.TransactOpts, node, data)
  8004  }
  8005  
  8006  // SetDNSRecords is a paid mutator transaction binding the contract method 0x0af179d7.
  8007  //
  8008  // Solidity: function setDNSRecords(bytes32 node, bytes data) returns()
  8009  func (_PublicResolver *PublicResolverTransactorSession) SetDNSRecords(node [32]byte, data []byte) (*types.Transaction, error) {
  8010  	return _PublicResolver.Contract.SetDNSRecords(&_PublicResolver.TransactOpts, node, data)
  8011  }
  8012  
  8013  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  8014  //
  8015  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  8016  func (_PublicResolver *PublicResolverTransactor) SetInterface(opts *bind.TransactOpts, node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  8017  	return _PublicResolver.contract.Transact(opts, "setInterface", node, interfaceID, implementer)
  8018  }
  8019  
  8020  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  8021  //
  8022  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  8023  func (_PublicResolver *PublicResolverSession) SetInterface(node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  8024  	return _PublicResolver.Contract.SetInterface(&_PublicResolver.TransactOpts, node, interfaceID, implementer)
  8025  }
  8026  
  8027  // SetInterface is a paid mutator transaction binding the contract method 0xe59d895d.
  8028  //
  8029  // Solidity: function setInterface(bytes32 node, bytes4 interfaceID, address implementer) returns()
  8030  func (_PublicResolver *PublicResolverTransactorSession) SetInterface(node [32]byte, interfaceID [4]byte, implementer common.Address) (*types.Transaction, error) {
  8031  	return _PublicResolver.Contract.SetInterface(&_PublicResolver.TransactOpts, node, interfaceID, implementer)
  8032  }
  8033  
  8034  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  8035  //
  8036  // Solidity: function setName(bytes32 node, string name) returns()
  8037  func (_PublicResolver *PublicResolverTransactor) SetName(opts *bind.TransactOpts, node [32]byte, name string) (*types.Transaction, error) {
  8038  	return _PublicResolver.contract.Transact(opts, "setName", node, name)
  8039  }
  8040  
  8041  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  8042  //
  8043  // Solidity: function setName(bytes32 node, string name) returns()
  8044  func (_PublicResolver *PublicResolverSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
  8045  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
  8046  }
  8047  
  8048  // SetName is a paid mutator transaction binding the contract method 0x77372213.
  8049  //
  8050  // Solidity: function setName(bytes32 node, string name) returns()
  8051  func (_PublicResolver *PublicResolverTransactorSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
  8052  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
  8053  }
  8054  
  8055  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  8056  //
  8057  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  8058  func (_PublicResolver *PublicResolverTransactor) SetPubkey(opts *bind.TransactOpts, node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  8059  	return _PublicResolver.contract.Transact(opts, "setPubkey", node, x, y)
  8060  }
  8061  
  8062  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  8063  //
  8064  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  8065  func (_PublicResolver *PublicResolverSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  8066  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
  8067  }
  8068  
  8069  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
  8070  //
  8071  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
  8072  func (_PublicResolver *PublicResolverTransactorSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
  8073  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
  8074  }
  8075  
  8076  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
  8077  //
  8078  // Solidity: function setText(bytes32 node, string key, string value) returns()
  8079  func (_PublicResolver *PublicResolverTransactor) SetText(opts *bind.TransactOpts, node [32]byte, key string, value string) (*types.Transaction, error) {
  8080  	return _PublicResolver.contract.Transact(opts, "setText", node, key, value)
  8081  }
  8082  
  8083  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
  8084  //
  8085  // Solidity: function setText(bytes32 node, string key, string value) returns()
  8086  func (_PublicResolver *PublicResolverSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
  8087  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
  8088  }
  8089  
  8090  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
  8091  //
  8092  // Solidity: function setText(bytes32 node, string key, string value) returns()
  8093  func (_PublicResolver *PublicResolverTransactorSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
  8094  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
  8095  }
  8096  
  8097  // PublicResolverABIChangedIterator is returned from FilterABIChanged and is used to iterate over the raw logs and unpacked data for ABIChanged events raised by the PublicResolver contract.
  8098  type PublicResolverABIChangedIterator struct {
  8099  	Event *PublicResolverABIChanged // Event containing the contract specifics and raw log
  8100  
  8101  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8102  	event    string              // Event name to use for unpacking event data
  8103  
  8104  	logs chan types.Log        // Log channel receiving the found contract events
  8105  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8106  	done bool                  // Whether the subscription completed delivering logs
  8107  	fail error                 // Occurred error to stop iteration
  8108  }
  8109  
  8110  // Next advances the iterator to the subsequent event, returning whether there
  8111  // are any more events found. In case of a retrieval or parsing error, false is
  8112  // returned and Error() can be queried for the exact failure.
  8113  func (it *PublicResolverABIChangedIterator) Next() bool {
  8114  	// If the iterator failed, stop iterating
  8115  	if it.fail != nil {
  8116  		return false
  8117  	}
  8118  	// If the iterator completed, deliver directly whatever's available
  8119  	if it.done {
  8120  		select {
  8121  		case log := <-it.logs:
  8122  			it.Event = new(PublicResolverABIChanged)
  8123  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8124  				it.fail = err
  8125  				return false
  8126  			}
  8127  			it.Event.Raw = log
  8128  			return true
  8129  
  8130  		default:
  8131  			return false
  8132  		}
  8133  	}
  8134  	// Iterator still in progress, wait for either a data or an error event
  8135  	select {
  8136  	case log := <-it.logs:
  8137  		it.Event = new(PublicResolverABIChanged)
  8138  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8139  			it.fail = err
  8140  			return false
  8141  		}
  8142  		it.Event.Raw = log
  8143  		return true
  8144  
  8145  	case err := <-it.sub.Err():
  8146  		it.done = true
  8147  		it.fail = err
  8148  		return it.Next()
  8149  	}
  8150  }
  8151  
  8152  // Error returns any retrieval or parsing error occurred during filtering.
  8153  func (it *PublicResolverABIChangedIterator) Error() error {
  8154  	return it.fail
  8155  }
  8156  
  8157  // Close terminates the iteration process, releasing any pending underlying
  8158  // resources.
  8159  func (it *PublicResolverABIChangedIterator) Close() error {
  8160  	it.sub.Unsubscribe()
  8161  	return nil
  8162  }
  8163  
  8164  // PublicResolverABIChanged represents a ABIChanged event raised by the PublicResolver contract.
  8165  type PublicResolverABIChanged struct {
  8166  	Node        [32]byte
  8167  	ContentType *big.Int
  8168  	Raw         types.Log // Blockchain specific contextual infos
  8169  }
  8170  
  8171  // FilterABIChanged is a free log retrieval operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
  8172  //
  8173  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
  8174  func (_PublicResolver *PublicResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node [][32]byte, contentType []*big.Int) (*PublicResolverABIChangedIterator, error) {
  8175  
  8176  	var nodeRule []interface{}
  8177  	for _, nodeItem := range node {
  8178  		nodeRule = append(nodeRule, nodeItem)
  8179  	}
  8180  	var contentTypeRule []interface{}
  8181  	for _, contentTypeItem := range contentType {
  8182  		contentTypeRule = append(contentTypeRule, contentTypeItem)
  8183  	}
  8184  
  8185  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
  8186  	if err != nil {
  8187  		return nil, err
  8188  	}
  8189  	return &PublicResolverABIChangedIterator{contract: _PublicResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
  8190  }
  8191  
  8192  // WatchABIChanged is a free log subscription operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
  8193  //
  8194  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
  8195  func (_PublicResolver *PublicResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverABIChanged, node [][32]byte, contentType []*big.Int) (event.Subscription, error) {
  8196  
  8197  	var nodeRule []interface{}
  8198  	for _, nodeItem := range node {
  8199  		nodeRule = append(nodeRule, nodeItem)
  8200  	}
  8201  	var contentTypeRule []interface{}
  8202  	for _, contentTypeItem := range contentType {
  8203  		contentTypeRule = append(contentTypeRule, contentTypeItem)
  8204  	}
  8205  
  8206  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
  8207  	if err != nil {
  8208  		return nil, err
  8209  	}
  8210  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8211  		defer sub.Unsubscribe()
  8212  		for {
  8213  			select {
  8214  			case log := <-logs:
  8215  				// New log arrived, parse the event and forward to the user
  8216  				event := new(PublicResolverABIChanged)
  8217  				if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
  8218  					return err
  8219  				}
  8220  				event.Raw = log
  8221  
  8222  				select {
  8223  				case sink <- event:
  8224  				case err := <-sub.Err():
  8225  					return err
  8226  				case <-quit:
  8227  					return nil
  8228  				}
  8229  			case err := <-sub.Err():
  8230  				return err
  8231  			case <-quit:
  8232  				return nil
  8233  			}
  8234  		}
  8235  	}), nil
  8236  }
  8237  
  8238  // ParseABIChanged is a log parse operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
  8239  //
  8240  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
  8241  func (_PublicResolver *PublicResolverFilterer) ParseABIChanged(log types.Log) (*PublicResolverABIChanged, error) {
  8242  	event := new(PublicResolverABIChanged)
  8243  	if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
  8244  		return nil, err
  8245  	}
  8246  	event.Raw = log
  8247  	return event, nil
  8248  }
  8249  
  8250  // PublicResolverAddrChangedIterator is returned from FilterAddrChanged and is used to iterate over the raw logs and unpacked data for AddrChanged events raised by the PublicResolver contract.
  8251  type PublicResolverAddrChangedIterator struct {
  8252  	Event *PublicResolverAddrChanged // Event containing the contract specifics and raw log
  8253  
  8254  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8255  	event    string              // Event name to use for unpacking event data
  8256  
  8257  	logs chan types.Log        // Log channel receiving the found contract events
  8258  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8259  	done bool                  // Whether the subscription completed delivering logs
  8260  	fail error                 // Occurred error to stop iteration
  8261  }
  8262  
  8263  // Next advances the iterator to the subsequent event, returning whether there
  8264  // are any more events found. In case of a retrieval or parsing error, false is
  8265  // returned and Error() can be queried for the exact failure.
  8266  func (it *PublicResolverAddrChangedIterator) Next() bool {
  8267  	// If the iterator failed, stop iterating
  8268  	if it.fail != nil {
  8269  		return false
  8270  	}
  8271  	// If the iterator completed, deliver directly whatever's available
  8272  	if it.done {
  8273  		select {
  8274  		case log := <-it.logs:
  8275  			it.Event = new(PublicResolverAddrChanged)
  8276  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8277  				it.fail = err
  8278  				return false
  8279  			}
  8280  			it.Event.Raw = log
  8281  			return true
  8282  
  8283  		default:
  8284  			return false
  8285  		}
  8286  	}
  8287  	// Iterator still in progress, wait for either a data or an error event
  8288  	select {
  8289  	case log := <-it.logs:
  8290  		it.Event = new(PublicResolverAddrChanged)
  8291  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8292  			it.fail = err
  8293  			return false
  8294  		}
  8295  		it.Event.Raw = log
  8296  		return true
  8297  
  8298  	case err := <-it.sub.Err():
  8299  		it.done = true
  8300  		it.fail = err
  8301  		return it.Next()
  8302  	}
  8303  }
  8304  
  8305  // Error returns any retrieval or parsing error occurred during filtering.
  8306  func (it *PublicResolverAddrChangedIterator) Error() error {
  8307  	return it.fail
  8308  }
  8309  
  8310  // Close terminates the iteration process, releasing any pending underlying
  8311  // resources.
  8312  func (it *PublicResolverAddrChangedIterator) Close() error {
  8313  	it.sub.Unsubscribe()
  8314  	return nil
  8315  }
  8316  
  8317  // PublicResolverAddrChanged represents a AddrChanged event raised by the PublicResolver contract.
  8318  type PublicResolverAddrChanged struct {
  8319  	Node [32]byte
  8320  	A    common.Address
  8321  	Raw  types.Log // Blockchain specific contextual infos
  8322  }
  8323  
  8324  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  8325  //
  8326  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  8327  func (_PublicResolver *PublicResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverAddrChangedIterator, error) {
  8328  
  8329  	var nodeRule []interface{}
  8330  	for _, nodeItem := range node {
  8331  		nodeRule = append(nodeRule, nodeItem)
  8332  	}
  8333  
  8334  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
  8335  	if err != nil {
  8336  		return nil, err
  8337  	}
  8338  	return &PublicResolverAddrChangedIterator{contract: _PublicResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
  8339  }
  8340  
  8341  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  8342  //
  8343  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  8344  func (_PublicResolver *PublicResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
  8345  
  8346  	var nodeRule []interface{}
  8347  	for _, nodeItem := range node {
  8348  		nodeRule = append(nodeRule, nodeItem)
  8349  	}
  8350  
  8351  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
  8352  	if err != nil {
  8353  		return nil, err
  8354  	}
  8355  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8356  		defer sub.Unsubscribe()
  8357  		for {
  8358  			select {
  8359  			case log := <-logs:
  8360  				// New log arrived, parse the event and forward to the user
  8361  				event := new(PublicResolverAddrChanged)
  8362  				if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
  8363  					return err
  8364  				}
  8365  				event.Raw = log
  8366  
  8367  				select {
  8368  				case sink <- event:
  8369  				case err := <-sub.Err():
  8370  					return err
  8371  				case <-quit:
  8372  					return nil
  8373  				}
  8374  			case err := <-sub.Err():
  8375  				return err
  8376  			case <-quit:
  8377  				return nil
  8378  			}
  8379  		}
  8380  	}), nil
  8381  }
  8382  
  8383  // ParseAddrChanged is a log parse operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
  8384  //
  8385  // Solidity: event AddrChanged(bytes32 indexed node, address a)
  8386  func (_PublicResolver *PublicResolverFilterer) ParseAddrChanged(log types.Log) (*PublicResolverAddrChanged, error) {
  8387  	event := new(PublicResolverAddrChanged)
  8388  	if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
  8389  		return nil, err
  8390  	}
  8391  	event.Raw = log
  8392  	return event, nil
  8393  }
  8394  
  8395  // PublicResolverAddressChangedIterator is returned from FilterAddressChanged and is used to iterate over the raw logs and unpacked data for AddressChanged events raised by the PublicResolver contract.
  8396  type PublicResolverAddressChangedIterator struct {
  8397  	Event *PublicResolverAddressChanged // Event containing the contract specifics and raw log
  8398  
  8399  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8400  	event    string              // Event name to use for unpacking event data
  8401  
  8402  	logs chan types.Log        // Log channel receiving the found contract events
  8403  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8404  	done bool                  // Whether the subscription completed delivering logs
  8405  	fail error                 // Occurred error to stop iteration
  8406  }
  8407  
  8408  // Next advances the iterator to the subsequent event, returning whether there
  8409  // are any more events found. In case of a retrieval or parsing error, false is
  8410  // returned and Error() can be queried for the exact failure.
  8411  func (it *PublicResolverAddressChangedIterator) Next() bool {
  8412  	// If the iterator failed, stop iterating
  8413  	if it.fail != nil {
  8414  		return false
  8415  	}
  8416  	// If the iterator completed, deliver directly whatever's available
  8417  	if it.done {
  8418  		select {
  8419  		case log := <-it.logs:
  8420  			it.Event = new(PublicResolverAddressChanged)
  8421  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8422  				it.fail = err
  8423  				return false
  8424  			}
  8425  			it.Event.Raw = log
  8426  			return true
  8427  
  8428  		default:
  8429  			return false
  8430  		}
  8431  	}
  8432  	// Iterator still in progress, wait for either a data or an error event
  8433  	select {
  8434  	case log := <-it.logs:
  8435  		it.Event = new(PublicResolverAddressChanged)
  8436  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8437  			it.fail = err
  8438  			return false
  8439  		}
  8440  		it.Event.Raw = log
  8441  		return true
  8442  
  8443  	case err := <-it.sub.Err():
  8444  		it.done = true
  8445  		it.fail = err
  8446  		return it.Next()
  8447  	}
  8448  }
  8449  
  8450  // Error returns any retrieval or parsing error occurred during filtering.
  8451  func (it *PublicResolverAddressChangedIterator) Error() error {
  8452  	return it.fail
  8453  }
  8454  
  8455  // Close terminates the iteration process, releasing any pending underlying
  8456  // resources.
  8457  func (it *PublicResolverAddressChangedIterator) Close() error {
  8458  	it.sub.Unsubscribe()
  8459  	return nil
  8460  }
  8461  
  8462  // PublicResolverAddressChanged represents a AddressChanged event raised by the PublicResolver contract.
  8463  type PublicResolverAddressChanged struct {
  8464  	Node       [32]byte
  8465  	CoinType   *big.Int
  8466  	NewAddress []byte
  8467  	Raw        types.Log // Blockchain specific contextual infos
  8468  }
  8469  
  8470  // FilterAddressChanged is a free log retrieval operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  8471  //
  8472  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  8473  func (_PublicResolver *PublicResolverFilterer) FilterAddressChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverAddressChangedIterator, error) {
  8474  
  8475  	var nodeRule []interface{}
  8476  	for _, nodeItem := range node {
  8477  		nodeRule = append(nodeRule, nodeItem)
  8478  	}
  8479  
  8480  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddressChanged", nodeRule)
  8481  	if err != nil {
  8482  		return nil, err
  8483  	}
  8484  	return &PublicResolverAddressChangedIterator{contract: _PublicResolver.contract, event: "AddressChanged", logs: logs, sub: sub}, nil
  8485  }
  8486  
  8487  // WatchAddressChanged is a free log subscription operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  8488  //
  8489  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  8490  func (_PublicResolver *PublicResolverFilterer) WatchAddressChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddressChanged, node [][32]byte) (event.Subscription, error) {
  8491  
  8492  	var nodeRule []interface{}
  8493  	for _, nodeItem := range node {
  8494  		nodeRule = append(nodeRule, nodeItem)
  8495  	}
  8496  
  8497  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddressChanged", nodeRule)
  8498  	if err != nil {
  8499  		return nil, err
  8500  	}
  8501  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8502  		defer sub.Unsubscribe()
  8503  		for {
  8504  			select {
  8505  			case log := <-logs:
  8506  				// New log arrived, parse the event and forward to the user
  8507  				event := new(PublicResolverAddressChanged)
  8508  				if err := _PublicResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
  8509  					return err
  8510  				}
  8511  				event.Raw = log
  8512  
  8513  				select {
  8514  				case sink <- event:
  8515  				case err := <-sub.Err():
  8516  					return err
  8517  				case <-quit:
  8518  					return nil
  8519  				}
  8520  			case err := <-sub.Err():
  8521  				return err
  8522  			case <-quit:
  8523  				return nil
  8524  			}
  8525  		}
  8526  	}), nil
  8527  }
  8528  
  8529  // ParseAddressChanged is a log parse operation binding the contract event 0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752.
  8530  //
  8531  // Solidity: event AddressChanged(bytes32 indexed node, uint256 coinType, bytes newAddress)
  8532  func (_PublicResolver *PublicResolverFilterer) ParseAddressChanged(log types.Log) (*PublicResolverAddressChanged, error) {
  8533  	event := new(PublicResolverAddressChanged)
  8534  	if err := _PublicResolver.contract.UnpackLog(event, "AddressChanged", log); err != nil {
  8535  		return nil, err
  8536  	}
  8537  	event.Raw = log
  8538  	return event, nil
  8539  }
  8540  
  8541  // PublicResolverAuthorisationChangedIterator is returned from FilterAuthorisationChanged and is used to iterate over the raw logs and unpacked data for AuthorisationChanged events raised by the PublicResolver contract.
  8542  type PublicResolverAuthorisationChangedIterator struct {
  8543  	Event *PublicResolverAuthorisationChanged // Event containing the contract specifics and raw log
  8544  
  8545  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8546  	event    string              // Event name to use for unpacking event data
  8547  
  8548  	logs chan types.Log        // Log channel receiving the found contract events
  8549  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8550  	done bool                  // Whether the subscription completed delivering logs
  8551  	fail error                 // Occurred error to stop iteration
  8552  }
  8553  
  8554  // Next advances the iterator to the subsequent event, returning whether there
  8555  // are any more events found. In case of a retrieval or parsing error, false is
  8556  // returned and Error() can be queried for the exact failure.
  8557  func (it *PublicResolverAuthorisationChangedIterator) Next() bool {
  8558  	// If the iterator failed, stop iterating
  8559  	if it.fail != nil {
  8560  		return false
  8561  	}
  8562  	// If the iterator completed, deliver directly whatever's available
  8563  	if it.done {
  8564  		select {
  8565  		case log := <-it.logs:
  8566  			it.Event = new(PublicResolverAuthorisationChanged)
  8567  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8568  				it.fail = err
  8569  				return false
  8570  			}
  8571  			it.Event.Raw = log
  8572  			return true
  8573  
  8574  		default:
  8575  			return false
  8576  		}
  8577  	}
  8578  	// Iterator still in progress, wait for either a data or an error event
  8579  	select {
  8580  	case log := <-it.logs:
  8581  		it.Event = new(PublicResolverAuthorisationChanged)
  8582  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8583  			it.fail = err
  8584  			return false
  8585  		}
  8586  		it.Event.Raw = log
  8587  		return true
  8588  
  8589  	case err := <-it.sub.Err():
  8590  		it.done = true
  8591  		it.fail = err
  8592  		return it.Next()
  8593  	}
  8594  }
  8595  
  8596  // Error returns any retrieval or parsing error occurred during filtering.
  8597  func (it *PublicResolverAuthorisationChangedIterator) Error() error {
  8598  	return it.fail
  8599  }
  8600  
  8601  // Close terminates the iteration process, releasing any pending underlying
  8602  // resources.
  8603  func (it *PublicResolverAuthorisationChangedIterator) Close() error {
  8604  	it.sub.Unsubscribe()
  8605  	return nil
  8606  }
  8607  
  8608  // PublicResolverAuthorisationChanged represents a AuthorisationChanged event raised by the PublicResolver contract.
  8609  type PublicResolverAuthorisationChanged struct {
  8610  	Node         [32]byte
  8611  	Owner        common.Address
  8612  	Target       common.Address
  8613  	IsAuthorised bool
  8614  	Raw          types.Log // Blockchain specific contextual infos
  8615  }
  8616  
  8617  // FilterAuthorisationChanged is a free log retrieval operation binding the contract event 0xe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df.
  8618  //
  8619  // Solidity: event AuthorisationChanged(bytes32 indexed node, address indexed owner, address indexed target, bool isAuthorised)
  8620  func (_PublicResolver *PublicResolverFilterer) FilterAuthorisationChanged(opts *bind.FilterOpts, node [][32]byte, owner []common.Address, target []common.Address) (*PublicResolverAuthorisationChangedIterator, error) {
  8621  
  8622  	var nodeRule []interface{}
  8623  	for _, nodeItem := range node {
  8624  		nodeRule = append(nodeRule, nodeItem)
  8625  	}
  8626  	var ownerRule []interface{}
  8627  	for _, ownerItem := range owner {
  8628  		ownerRule = append(ownerRule, ownerItem)
  8629  	}
  8630  	var targetRule []interface{}
  8631  	for _, targetItem := range target {
  8632  		targetRule = append(targetRule, targetItem)
  8633  	}
  8634  
  8635  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AuthorisationChanged", nodeRule, ownerRule, targetRule)
  8636  	if err != nil {
  8637  		return nil, err
  8638  	}
  8639  	return &PublicResolverAuthorisationChangedIterator{contract: _PublicResolver.contract, event: "AuthorisationChanged", logs: logs, sub: sub}, nil
  8640  }
  8641  
  8642  // WatchAuthorisationChanged is a free log subscription operation binding the contract event 0xe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df.
  8643  //
  8644  // Solidity: event AuthorisationChanged(bytes32 indexed node, address indexed owner, address indexed target, bool isAuthorised)
  8645  func (_PublicResolver *PublicResolverFilterer) WatchAuthorisationChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAuthorisationChanged, node [][32]byte, owner []common.Address, target []common.Address) (event.Subscription, error) {
  8646  
  8647  	var nodeRule []interface{}
  8648  	for _, nodeItem := range node {
  8649  		nodeRule = append(nodeRule, nodeItem)
  8650  	}
  8651  	var ownerRule []interface{}
  8652  	for _, ownerItem := range owner {
  8653  		ownerRule = append(ownerRule, ownerItem)
  8654  	}
  8655  	var targetRule []interface{}
  8656  	for _, targetItem := range target {
  8657  		targetRule = append(targetRule, targetItem)
  8658  	}
  8659  
  8660  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AuthorisationChanged", nodeRule, ownerRule, targetRule)
  8661  	if err != nil {
  8662  		return nil, err
  8663  	}
  8664  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8665  		defer sub.Unsubscribe()
  8666  		for {
  8667  			select {
  8668  			case log := <-logs:
  8669  				// New log arrived, parse the event and forward to the user
  8670  				event := new(PublicResolverAuthorisationChanged)
  8671  				if err := _PublicResolver.contract.UnpackLog(event, "AuthorisationChanged", log); err != nil {
  8672  					return err
  8673  				}
  8674  				event.Raw = log
  8675  
  8676  				select {
  8677  				case sink <- event:
  8678  				case err := <-sub.Err():
  8679  					return err
  8680  				case <-quit:
  8681  					return nil
  8682  				}
  8683  			case err := <-sub.Err():
  8684  				return err
  8685  			case <-quit:
  8686  				return nil
  8687  			}
  8688  		}
  8689  	}), nil
  8690  }
  8691  
  8692  // ParseAuthorisationChanged is a log parse operation binding the contract event 0xe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df.
  8693  //
  8694  // Solidity: event AuthorisationChanged(bytes32 indexed node, address indexed owner, address indexed target, bool isAuthorised)
  8695  func (_PublicResolver *PublicResolverFilterer) ParseAuthorisationChanged(log types.Log) (*PublicResolverAuthorisationChanged, error) {
  8696  	event := new(PublicResolverAuthorisationChanged)
  8697  	if err := _PublicResolver.contract.UnpackLog(event, "AuthorisationChanged", log); err != nil {
  8698  		return nil, err
  8699  	}
  8700  	event.Raw = log
  8701  	return event, nil
  8702  }
  8703  
  8704  // PublicResolverContenthashChangedIterator is returned from FilterContenthashChanged and is used to iterate over the raw logs and unpacked data for ContenthashChanged events raised by the PublicResolver contract.
  8705  type PublicResolverContenthashChangedIterator struct {
  8706  	Event *PublicResolverContenthashChanged // Event containing the contract specifics and raw log
  8707  
  8708  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8709  	event    string              // Event name to use for unpacking event data
  8710  
  8711  	logs chan types.Log        // Log channel receiving the found contract events
  8712  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8713  	done bool                  // Whether the subscription completed delivering logs
  8714  	fail error                 // Occurred error to stop iteration
  8715  }
  8716  
  8717  // Next advances the iterator to the subsequent event, returning whether there
  8718  // are any more events found. In case of a retrieval or parsing error, false is
  8719  // returned and Error() can be queried for the exact failure.
  8720  func (it *PublicResolverContenthashChangedIterator) Next() bool {
  8721  	// If the iterator failed, stop iterating
  8722  	if it.fail != nil {
  8723  		return false
  8724  	}
  8725  	// If the iterator completed, deliver directly whatever's available
  8726  	if it.done {
  8727  		select {
  8728  		case log := <-it.logs:
  8729  			it.Event = new(PublicResolverContenthashChanged)
  8730  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8731  				it.fail = err
  8732  				return false
  8733  			}
  8734  			it.Event.Raw = log
  8735  			return true
  8736  
  8737  		default:
  8738  			return false
  8739  		}
  8740  	}
  8741  	// Iterator still in progress, wait for either a data or an error event
  8742  	select {
  8743  	case log := <-it.logs:
  8744  		it.Event = new(PublicResolverContenthashChanged)
  8745  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8746  			it.fail = err
  8747  			return false
  8748  		}
  8749  		it.Event.Raw = log
  8750  		return true
  8751  
  8752  	case err := <-it.sub.Err():
  8753  		it.done = true
  8754  		it.fail = err
  8755  		return it.Next()
  8756  	}
  8757  }
  8758  
  8759  // Error returns any retrieval or parsing error occurred during filtering.
  8760  func (it *PublicResolverContenthashChangedIterator) Error() error {
  8761  	return it.fail
  8762  }
  8763  
  8764  // Close terminates the iteration process, releasing any pending underlying
  8765  // resources.
  8766  func (it *PublicResolverContenthashChangedIterator) Close() error {
  8767  	it.sub.Unsubscribe()
  8768  	return nil
  8769  }
  8770  
  8771  // PublicResolverContenthashChanged represents a ContenthashChanged event raised by the PublicResolver contract.
  8772  type PublicResolverContenthashChanged struct {
  8773  	Node [32]byte
  8774  	Hash []byte
  8775  	Raw  types.Log // Blockchain specific contextual infos
  8776  }
  8777  
  8778  // FilterContenthashChanged is a free log retrieval operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  8779  //
  8780  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  8781  func (_PublicResolver *PublicResolverFilterer) FilterContenthashChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverContenthashChangedIterator, error) {
  8782  
  8783  	var nodeRule []interface{}
  8784  	for _, nodeItem := range node {
  8785  		nodeRule = append(nodeRule, nodeItem)
  8786  	}
  8787  
  8788  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ContenthashChanged", nodeRule)
  8789  	if err != nil {
  8790  		return nil, err
  8791  	}
  8792  	return &PublicResolverContenthashChangedIterator{contract: _PublicResolver.contract, event: "ContenthashChanged", logs: logs, sub: sub}, nil
  8793  }
  8794  
  8795  // WatchContenthashChanged is a free log subscription operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  8796  //
  8797  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  8798  func (_PublicResolver *PublicResolverFilterer) WatchContenthashChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContenthashChanged, node [][32]byte) (event.Subscription, error) {
  8799  
  8800  	var nodeRule []interface{}
  8801  	for _, nodeItem := range node {
  8802  		nodeRule = append(nodeRule, nodeItem)
  8803  	}
  8804  
  8805  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContenthashChanged", nodeRule)
  8806  	if err != nil {
  8807  		return nil, err
  8808  	}
  8809  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8810  		defer sub.Unsubscribe()
  8811  		for {
  8812  			select {
  8813  			case log := <-logs:
  8814  				// New log arrived, parse the event and forward to the user
  8815  				event := new(PublicResolverContenthashChanged)
  8816  				if err := _PublicResolver.contract.UnpackLog(event, "ContenthashChanged", log); err != nil {
  8817  					return err
  8818  				}
  8819  				event.Raw = log
  8820  
  8821  				select {
  8822  				case sink <- event:
  8823  				case err := <-sub.Err():
  8824  					return err
  8825  				case <-quit:
  8826  					return nil
  8827  				}
  8828  			case err := <-sub.Err():
  8829  				return err
  8830  			case <-quit:
  8831  				return nil
  8832  			}
  8833  		}
  8834  	}), nil
  8835  }
  8836  
  8837  // ParseContenthashChanged is a log parse operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
  8838  //
  8839  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
  8840  func (_PublicResolver *PublicResolverFilterer) ParseContenthashChanged(log types.Log) (*PublicResolverContenthashChanged, error) {
  8841  	event := new(PublicResolverContenthashChanged)
  8842  	if err := _PublicResolver.contract.UnpackLog(event, "ContenthashChanged", log); err != nil {
  8843  		return nil, err
  8844  	}
  8845  	event.Raw = log
  8846  	return event, nil
  8847  }
  8848  
  8849  // PublicResolverDNSRecordChangedIterator is returned from FilterDNSRecordChanged and is used to iterate over the raw logs and unpacked data for DNSRecordChanged events raised by the PublicResolver contract.
  8850  type PublicResolverDNSRecordChangedIterator struct {
  8851  	Event *PublicResolverDNSRecordChanged // Event containing the contract specifics and raw log
  8852  
  8853  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8854  	event    string              // Event name to use for unpacking event data
  8855  
  8856  	logs chan types.Log        // Log channel receiving the found contract events
  8857  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8858  	done bool                  // Whether the subscription completed delivering logs
  8859  	fail error                 // Occurred error to stop iteration
  8860  }
  8861  
  8862  // Next advances the iterator to the subsequent event, returning whether there
  8863  // are any more events found. In case of a retrieval or parsing error, false is
  8864  // returned and Error() can be queried for the exact failure.
  8865  func (it *PublicResolverDNSRecordChangedIterator) Next() bool {
  8866  	// If the iterator failed, stop iterating
  8867  	if it.fail != nil {
  8868  		return false
  8869  	}
  8870  	// If the iterator completed, deliver directly whatever's available
  8871  	if it.done {
  8872  		select {
  8873  		case log := <-it.logs:
  8874  			it.Event = new(PublicResolverDNSRecordChanged)
  8875  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8876  				it.fail = err
  8877  				return false
  8878  			}
  8879  			it.Event.Raw = log
  8880  			return true
  8881  
  8882  		default:
  8883  			return false
  8884  		}
  8885  	}
  8886  	// Iterator still in progress, wait for either a data or an error event
  8887  	select {
  8888  	case log := <-it.logs:
  8889  		it.Event = new(PublicResolverDNSRecordChanged)
  8890  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8891  			it.fail = err
  8892  			return false
  8893  		}
  8894  		it.Event.Raw = log
  8895  		return true
  8896  
  8897  	case err := <-it.sub.Err():
  8898  		it.done = true
  8899  		it.fail = err
  8900  		return it.Next()
  8901  	}
  8902  }
  8903  
  8904  // Error returns any retrieval or parsing error occurred during filtering.
  8905  func (it *PublicResolverDNSRecordChangedIterator) Error() error {
  8906  	return it.fail
  8907  }
  8908  
  8909  // Close terminates the iteration process, releasing any pending underlying
  8910  // resources.
  8911  func (it *PublicResolverDNSRecordChangedIterator) Close() error {
  8912  	it.sub.Unsubscribe()
  8913  	return nil
  8914  }
  8915  
  8916  // PublicResolverDNSRecordChanged represents a DNSRecordChanged event raised by the PublicResolver contract.
  8917  type PublicResolverDNSRecordChanged struct {
  8918  	Node     [32]byte
  8919  	Name     []byte
  8920  	Resource uint16
  8921  	Record   []byte
  8922  	Raw      types.Log // Blockchain specific contextual infos
  8923  }
  8924  
  8925  // FilterDNSRecordChanged is a free log retrieval operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  8926  //
  8927  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  8928  func (_PublicResolver *PublicResolverFilterer) FilterDNSRecordChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverDNSRecordChangedIterator, error) {
  8929  
  8930  	var nodeRule []interface{}
  8931  	for _, nodeItem := range node {
  8932  		nodeRule = append(nodeRule, nodeItem)
  8933  	}
  8934  
  8935  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "DNSRecordChanged", nodeRule)
  8936  	if err != nil {
  8937  		return nil, err
  8938  	}
  8939  	return &PublicResolverDNSRecordChangedIterator{contract: _PublicResolver.contract, event: "DNSRecordChanged", logs: logs, sub: sub}, nil
  8940  }
  8941  
  8942  // WatchDNSRecordChanged is a free log subscription operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  8943  //
  8944  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  8945  func (_PublicResolver *PublicResolverFilterer) WatchDNSRecordChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverDNSRecordChanged, node [][32]byte) (event.Subscription, error) {
  8946  
  8947  	var nodeRule []interface{}
  8948  	for _, nodeItem := range node {
  8949  		nodeRule = append(nodeRule, nodeItem)
  8950  	}
  8951  
  8952  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "DNSRecordChanged", nodeRule)
  8953  	if err != nil {
  8954  		return nil, err
  8955  	}
  8956  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8957  		defer sub.Unsubscribe()
  8958  		for {
  8959  			select {
  8960  			case log := <-logs:
  8961  				// New log arrived, parse the event and forward to the user
  8962  				event := new(PublicResolverDNSRecordChanged)
  8963  				if err := _PublicResolver.contract.UnpackLog(event, "DNSRecordChanged", log); err != nil {
  8964  					return err
  8965  				}
  8966  				event.Raw = log
  8967  
  8968  				select {
  8969  				case sink <- event:
  8970  				case err := <-sub.Err():
  8971  					return err
  8972  				case <-quit:
  8973  					return nil
  8974  				}
  8975  			case err := <-sub.Err():
  8976  				return err
  8977  			case <-quit:
  8978  				return nil
  8979  			}
  8980  		}
  8981  	}), nil
  8982  }
  8983  
  8984  // ParseDNSRecordChanged is a log parse operation binding the contract event 0x52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b.
  8985  //
  8986  // Solidity: event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record)
  8987  func (_PublicResolver *PublicResolverFilterer) ParseDNSRecordChanged(log types.Log) (*PublicResolverDNSRecordChanged, error) {
  8988  	event := new(PublicResolverDNSRecordChanged)
  8989  	if err := _PublicResolver.contract.UnpackLog(event, "DNSRecordChanged", log); err != nil {
  8990  		return nil, err
  8991  	}
  8992  	event.Raw = log
  8993  	return event, nil
  8994  }
  8995  
  8996  // PublicResolverDNSRecordDeletedIterator is returned from FilterDNSRecordDeleted and is used to iterate over the raw logs and unpacked data for DNSRecordDeleted events raised by the PublicResolver contract.
  8997  type PublicResolverDNSRecordDeletedIterator struct {
  8998  	Event *PublicResolverDNSRecordDeleted // Event containing the contract specifics and raw log
  8999  
  9000  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9001  	event    string              // Event name to use for unpacking event data
  9002  
  9003  	logs chan types.Log        // Log channel receiving the found contract events
  9004  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9005  	done bool                  // Whether the subscription completed delivering logs
  9006  	fail error                 // Occurred error to stop iteration
  9007  }
  9008  
  9009  // Next advances the iterator to the subsequent event, returning whether there
  9010  // are any more events found. In case of a retrieval or parsing error, false is
  9011  // returned and Error() can be queried for the exact failure.
  9012  func (it *PublicResolverDNSRecordDeletedIterator) Next() bool {
  9013  	// If the iterator failed, stop iterating
  9014  	if it.fail != nil {
  9015  		return false
  9016  	}
  9017  	// If the iterator completed, deliver directly whatever's available
  9018  	if it.done {
  9019  		select {
  9020  		case log := <-it.logs:
  9021  			it.Event = new(PublicResolverDNSRecordDeleted)
  9022  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9023  				it.fail = err
  9024  				return false
  9025  			}
  9026  			it.Event.Raw = log
  9027  			return true
  9028  
  9029  		default:
  9030  			return false
  9031  		}
  9032  	}
  9033  	// Iterator still in progress, wait for either a data or an error event
  9034  	select {
  9035  	case log := <-it.logs:
  9036  		it.Event = new(PublicResolverDNSRecordDeleted)
  9037  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9038  			it.fail = err
  9039  			return false
  9040  		}
  9041  		it.Event.Raw = log
  9042  		return true
  9043  
  9044  	case err := <-it.sub.Err():
  9045  		it.done = true
  9046  		it.fail = err
  9047  		return it.Next()
  9048  	}
  9049  }
  9050  
  9051  // Error returns any retrieval or parsing error occurred during filtering.
  9052  func (it *PublicResolverDNSRecordDeletedIterator) Error() error {
  9053  	return it.fail
  9054  }
  9055  
  9056  // Close terminates the iteration process, releasing any pending underlying
  9057  // resources.
  9058  func (it *PublicResolverDNSRecordDeletedIterator) Close() error {
  9059  	it.sub.Unsubscribe()
  9060  	return nil
  9061  }
  9062  
  9063  // PublicResolverDNSRecordDeleted represents a DNSRecordDeleted event raised by the PublicResolver contract.
  9064  type PublicResolverDNSRecordDeleted struct {
  9065  	Node     [32]byte
  9066  	Name     []byte
  9067  	Resource uint16
  9068  	Raw      types.Log // Blockchain specific contextual infos
  9069  }
  9070  
  9071  // FilterDNSRecordDeleted is a free log retrieval operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  9072  //
  9073  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  9074  func (_PublicResolver *PublicResolverFilterer) FilterDNSRecordDeleted(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverDNSRecordDeletedIterator, error) {
  9075  
  9076  	var nodeRule []interface{}
  9077  	for _, nodeItem := range node {
  9078  		nodeRule = append(nodeRule, nodeItem)
  9079  	}
  9080  
  9081  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "DNSRecordDeleted", nodeRule)
  9082  	if err != nil {
  9083  		return nil, err
  9084  	}
  9085  	return &PublicResolverDNSRecordDeletedIterator{contract: _PublicResolver.contract, event: "DNSRecordDeleted", logs: logs, sub: sub}, nil
  9086  }
  9087  
  9088  // WatchDNSRecordDeleted is a free log subscription operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  9089  //
  9090  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  9091  func (_PublicResolver *PublicResolverFilterer) WatchDNSRecordDeleted(opts *bind.WatchOpts, sink chan<- *PublicResolverDNSRecordDeleted, node [][32]byte) (event.Subscription, error) {
  9092  
  9093  	var nodeRule []interface{}
  9094  	for _, nodeItem := range node {
  9095  		nodeRule = append(nodeRule, nodeItem)
  9096  	}
  9097  
  9098  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "DNSRecordDeleted", nodeRule)
  9099  	if err != nil {
  9100  		return nil, err
  9101  	}
  9102  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9103  		defer sub.Unsubscribe()
  9104  		for {
  9105  			select {
  9106  			case log := <-logs:
  9107  				// New log arrived, parse the event and forward to the user
  9108  				event := new(PublicResolverDNSRecordDeleted)
  9109  				if err := _PublicResolver.contract.UnpackLog(event, "DNSRecordDeleted", log); err != nil {
  9110  					return err
  9111  				}
  9112  				event.Raw = log
  9113  
  9114  				select {
  9115  				case sink <- event:
  9116  				case err := <-sub.Err():
  9117  					return err
  9118  				case <-quit:
  9119  					return nil
  9120  				}
  9121  			case err := <-sub.Err():
  9122  				return err
  9123  			case <-quit:
  9124  				return nil
  9125  			}
  9126  		}
  9127  	}), nil
  9128  }
  9129  
  9130  // ParseDNSRecordDeleted is a log parse operation binding the contract event 0x03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207.
  9131  //
  9132  // Solidity: event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource)
  9133  func (_PublicResolver *PublicResolverFilterer) ParseDNSRecordDeleted(log types.Log) (*PublicResolverDNSRecordDeleted, error) {
  9134  	event := new(PublicResolverDNSRecordDeleted)
  9135  	if err := _PublicResolver.contract.UnpackLog(event, "DNSRecordDeleted", log); err != nil {
  9136  		return nil, err
  9137  	}
  9138  	event.Raw = log
  9139  	return event, nil
  9140  }
  9141  
  9142  // PublicResolverDNSZoneClearedIterator is returned from FilterDNSZoneCleared and is used to iterate over the raw logs and unpacked data for DNSZoneCleared events raised by the PublicResolver contract.
  9143  type PublicResolverDNSZoneClearedIterator struct {
  9144  	Event *PublicResolverDNSZoneCleared // Event containing the contract specifics and raw log
  9145  
  9146  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9147  	event    string              // Event name to use for unpacking event data
  9148  
  9149  	logs chan types.Log        // Log channel receiving the found contract events
  9150  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9151  	done bool                  // Whether the subscription completed delivering logs
  9152  	fail error                 // Occurred error to stop iteration
  9153  }
  9154  
  9155  // Next advances the iterator to the subsequent event, returning whether there
  9156  // are any more events found. In case of a retrieval or parsing error, false is
  9157  // returned and Error() can be queried for the exact failure.
  9158  func (it *PublicResolverDNSZoneClearedIterator) Next() bool {
  9159  	// If the iterator failed, stop iterating
  9160  	if it.fail != nil {
  9161  		return false
  9162  	}
  9163  	// If the iterator completed, deliver directly whatever's available
  9164  	if it.done {
  9165  		select {
  9166  		case log := <-it.logs:
  9167  			it.Event = new(PublicResolverDNSZoneCleared)
  9168  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9169  				it.fail = err
  9170  				return false
  9171  			}
  9172  			it.Event.Raw = log
  9173  			return true
  9174  
  9175  		default:
  9176  			return false
  9177  		}
  9178  	}
  9179  	// Iterator still in progress, wait for either a data or an error event
  9180  	select {
  9181  	case log := <-it.logs:
  9182  		it.Event = new(PublicResolverDNSZoneCleared)
  9183  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9184  			it.fail = err
  9185  			return false
  9186  		}
  9187  		it.Event.Raw = log
  9188  		return true
  9189  
  9190  	case err := <-it.sub.Err():
  9191  		it.done = true
  9192  		it.fail = err
  9193  		return it.Next()
  9194  	}
  9195  }
  9196  
  9197  // Error returns any retrieval or parsing error occurred during filtering.
  9198  func (it *PublicResolverDNSZoneClearedIterator) Error() error {
  9199  	return it.fail
  9200  }
  9201  
  9202  // Close terminates the iteration process, releasing any pending underlying
  9203  // resources.
  9204  func (it *PublicResolverDNSZoneClearedIterator) Close() error {
  9205  	it.sub.Unsubscribe()
  9206  	return nil
  9207  }
  9208  
  9209  // PublicResolverDNSZoneCleared represents a DNSZoneCleared event raised by the PublicResolver contract.
  9210  type PublicResolverDNSZoneCleared struct {
  9211  	Node [32]byte
  9212  	Raw  types.Log // Blockchain specific contextual infos
  9213  }
  9214  
  9215  // FilterDNSZoneCleared is a free log retrieval operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  9216  //
  9217  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  9218  func (_PublicResolver *PublicResolverFilterer) FilterDNSZoneCleared(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverDNSZoneClearedIterator, error) {
  9219  
  9220  	var nodeRule []interface{}
  9221  	for _, nodeItem := range node {
  9222  		nodeRule = append(nodeRule, nodeItem)
  9223  	}
  9224  
  9225  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "DNSZoneCleared", nodeRule)
  9226  	if err != nil {
  9227  		return nil, err
  9228  	}
  9229  	return &PublicResolverDNSZoneClearedIterator{contract: _PublicResolver.contract, event: "DNSZoneCleared", logs: logs, sub: sub}, nil
  9230  }
  9231  
  9232  // WatchDNSZoneCleared is a free log subscription operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  9233  //
  9234  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  9235  func (_PublicResolver *PublicResolverFilterer) WatchDNSZoneCleared(opts *bind.WatchOpts, sink chan<- *PublicResolverDNSZoneCleared, node [][32]byte) (event.Subscription, error) {
  9236  
  9237  	var nodeRule []interface{}
  9238  	for _, nodeItem := range node {
  9239  		nodeRule = append(nodeRule, nodeItem)
  9240  	}
  9241  
  9242  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "DNSZoneCleared", nodeRule)
  9243  	if err != nil {
  9244  		return nil, err
  9245  	}
  9246  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9247  		defer sub.Unsubscribe()
  9248  		for {
  9249  			select {
  9250  			case log := <-logs:
  9251  				// New log arrived, parse the event and forward to the user
  9252  				event := new(PublicResolverDNSZoneCleared)
  9253  				if err := _PublicResolver.contract.UnpackLog(event, "DNSZoneCleared", log); err != nil {
  9254  					return err
  9255  				}
  9256  				event.Raw = log
  9257  
  9258  				select {
  9259  				case sink <- event:
  9260  				case err := <-sub.Err():
  9261  					return err
  9262  				case <-quit:
  9263  					return nil
  9264  				}
  9265  			case err := <-sub.Err():
  9266  				return err
  9267  			case <-quit:
  9268  				return nil
  9269  			}
  9270  		}
  9271  	}), nil
  9272  }
  9273  
  9274  // ParseDNSZoneCleared is a log parse operation binding the contract event 0xb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a1983.
  9275  //
  9276  // Solidity: event DNSZoneCleared(bytes32 indexed node)
  9277  func (_PublicResolver *PublicResolverFilterer) ParseDNSZoneCleared(log types.Log) (*PublicResolverDNSZoneCleared, error) {
  9278  	event := new(PublicResolverDNSZoneCleared)
  9279  	if err := _PublicResolver.contract.UnpackLog(event, "DNSZoneCleared", log); err != nil {
  9280  		return nil, err
  9281  	}
  9282  	event.Raw = log
  9283  	return event, nil
  9284  }
  9285  
  9286  // PublicResolverInterfaceChangedIterator is returned from FilterInterfaceChanged and is used to iterate over the raw logs and unpacked data for InterfaceChanged events raised by the PublicResolver contract.
  9287  type PublicResolverInterfaceChangedIterator struct {
  9288  	Event *PublicResolverInterfaceChanged // Event containing the contract specifics and raw log
  9289  
  9290  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9291  	event    string              // Event name to use for unpacking event data
  9292  
  9293  	logs chan types.Log        // Log channel receiving the found contract events
  9294  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9295  	done bool                  // Whether the subscription completed delivering logs
  9296  	fail error                 // Occurred error to stop iteration
  9297  }
  9298  
  9299  // Next advances the iterator to the subsequent event, returning whether there
  9300  // are any more events found. In case of a retrieval or parsing error, false is
  9301  // returned and Error() can be queried for the exact failure.
  9302  func (it *PublicResolverInterfaceChangedIterator) Next() bool {
  9303  	// If the iterator failed, stop iterating
  9304  	if it.fail != nil {
  9305  		return false
  9306  	}
  9307  	// If the iterator completed, deliver directly whatever's available
  9308  	if it.done {
  9309  		select {
  9310  		case log := <-it.logs:
  9311  			it.Event = new(PublicResolverInterfaceChanged)
  9312  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9313  				it.fail = err
  9314  				return false
  9315  			}
  9316  			it.Event.Raw = log
  9317  			return true
  9318  
  9319  		default:
  9320  			return false
  9321  		}
  9322  	}
  9323  	// Iterator still in progress, wait for either a data or an error event
  9324  	select {
  9325  	case log := <-it.logs:
  9326  		it.Event = new(PublicResolverInterfaceChanged)
  9327  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9328  			it.fail = err
  9329  			return false
  9330  		}
  9331  		it.Event.Raw = log
  9332  		return true
  9333  
  9334  	case err := <-it.sub.Err():
  9335  		it.done = true
  9336  		it.fail = err
  9337  		return it.Next()
  9338  	}
  9339  }
  9340  
  9341  // Error returns any retrieval or parsing error occurred during filtering.
  9342  func (it *PublicResolverInterfaceChangedIterator) Error() error {
  9343  	return it.fail
  9344  }
  9345  
  9346  // Close terminates the iteration process, releasing any pending underlying
  9347  // resources.
  9348  func (it *PublicResolverInterfaceChangedIterator) Close() error {
  9349  	it.sub.Unsubscribe()
  9350  	return nil
  9351  }
  9352  
  9353  // PublicResolverInterfaceChanged represents a InterfaceChanged event raised by the PublicResolver contract.
  9354  type PublicResolverInterfaceChanged struct {
  9355  	Node        [32]byte
  9356  	InterfaceID [4]byte
  9357  	Implementer common.Address
  9358  	Raw         types.Log // Blockchain specific contextual infos
  9359  }
  9360  
  9361  // FilterInterfaceChanged is a free log retrieval operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  9362  //
  9363  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  9364  func (_PublicResolver *PublicResolverFilterer) FilterInterfaceChanged(opts *bind.FilterOpts, node [][32]byte, interfaceID [][4]byte) (*PublicResolverInterfaceChangedIterator, error) {
  9365  
  9366  	var nodeRule []interface{}
  9367  	for _, nodeItem := range node {
  9368  		nodeRule = append(nodeRule, nodeItem)
  9369  	}
  9370  	var interfaceIDRule []interface{}
  9371  	for _, interfaceIDItem := range interfaceID {
  9372  		interfaceIDRule = append(interfaceIDRule, interfaceIDItem)
  9373  	}
  9374  
  9375  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "InterfaceChanged", nodeRule, interfaceIDRule)
  9376  	if err != nil {
  9377  		return nil, err
  9378  	}
  9379  	return &PublicResolverInterfaceChangedIterator{contract: _PublicResolver.contract, event: "InterfaceChanged", logs: logs, sub: sub}, nil
  9380  }
  9381  
  9382  // WatchInterfaceChanged is a free log subscription operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  9383  //
  9384  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  9385  func (_PublicResolver *PublicResolverFilterer) WatchInterfaceChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverInterfaceChanged, node [][32]byte, interfaceID [][4]byte) (event.Subscription, error) {
  9386  
  9387  	var nodeRule []interface{}
  9388  	for _, nodeItem := range node {
  9389  		nodeRule = append(nodeRule, nodeItem)
  9390  	}
  9391  	var interfaceIDRule []interface{}
  9392  	for _, interfaceIDItem := range interfaceID {
  9393  		interfaceIDRule = append(interfaceIDRule, interfaceIDItem)
  9394  	}
  9395  
  9396  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "InterfaceChanged", nodeRule, interfaceIDRule)
  9397  	if err != nil {
  9398  		return nil, err
  9399  	}
  9400  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9401  		defer sub.Unsubscribe()
  9402  		for {
  9403  			select {
  9404  			case log := <-logs:
  9405  				// New log arrived, parse the event and forward to the user
  9406  				event := new(PublicResolverInterfaceChanged)
  9407  				if err := _PublicResolver.contract.UnpackLog(event, "InterfaceChanged", log); err != nil {
  9408  					return err
  9409  				}
  9410  				event.Raw = log
  9411  
  9412  				select {
  9413  				case sink <- event:
  9414  				case err := <-sub.Err():
  9415  					return err
  9416  				case <-quit:
  9417  					return nil
  9418  				}
  9419  			case err := <-sub.Err():
  9420  				return err
  9421  			case <-quit:
  9422  				return nil
  9423  			}
  9424  		}
  9425  	}), nil
  9426  }
  9427  
  9428  // ParseInterfaceChanged is a log parse operation binding the contract event 0x7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa.
  9429  //
  9430  // Solidity: event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer)
  9431  func (_PublicResolver *PublicResolverFilterer) ParseInterfaceChanged(log types.Log) (*PublicResolverInterfaceChanged, error) {
  9432  	event := new(PublicResolverInterfaceChanged)
  9433  	if err := _PublicResolver.contract.UnpackLog(event, "InterfaceChanged", log); err != nil {
  9434  		return nil, err
  9435  	}
  9436  	event.Raw = log
  9437  	return event, nil
  9438  }
  9439  
  9440  // PublicResolverNameChangedIterator is returned from FilterNameChanged and is used to iterate over the raw logs and unpacked data for NameChanged events raised by the PublicResolver contract.
  9441  type PublicResolverNameChangedIterator struct {
  9442  	Event *PublicResolverNameChanged // Event containing the contract specifics and raw log
  9443  
  9444  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9445  	event    string              // Event name to use for unpacking event data
  9446  
  9447  	logs chan types.Log        // Log channel receiving the found contract events
  9448  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9449  	done bool                  // Whether the subscription completed delivering logs
  9450  	fail error                 // Occurred error to stop iteration
  9451  }
  9452  
  9453  // Next advances the iterator to the subsequent event, returning whether there
  9454  // are any more events found. In case of a retrieval or parsing error, false is
  9455  // returned and Error() can be queried for the exact failure.
  9456  func (it *PublicResolverNameChangedIterator) Next() bool {
  9457  	// If the iterator failed, stop iterating
  9458  	if it.fail != nil {
  9459  		return false
  9460  	}
  9461  	// If the iterator completed, deliver directly whatever's available
  9462  	if it.done {
  9463  		select {
  9464  		case log := <-it.logs:
  9465  			it.Event = new(PublicResolverNameChanged)
  9466  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9467  				it.fail = err
  9468  				return false
  9469  			}
  9470  			it.Event.Raw = log
  9471  			return true
  9472  
  9473  		default:
  9474  			return false
  9475  		}
  9476  	}
  9477  	// Iterator still in progress, wait for either a data or an error event
  9478  	select {
  9479  	case log := <-it.logs:
  9480  		it.Event = new(PublicResolverNameChanged)
  9481  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9482  			it.fail = err
  9483  			return false
  9484  		}
  9485  		it.Event.Raw = log
  9486  		return true
  9487  
  9488  	case err := <-it.sub.Err():
  9489  		it.done = true
  9490  		it.fail = err
  9491  		return it.Next()
  9492  	}
  9493  }
  9494  
  9495  // Error returns any retrieval or parsing error occurred during filtering.
  9496  func (it *PublicResolverNameChangedIterator) Error() error {
  9497  	return it.fail
  9498  }
  9499  
  9500  // Close terminates the iteration process, releasing any pending underlying
  9501  // resources.
  9502  func (it *PublicResolverNameChangedIterator) Close() error {
  9503  	it.sub.Unsubscribe()
  9504  	return nil
  9505  }
  9506  
  9507  // PublicResolverNameChanged represents a NameChanged event raised by the PublicResolver contract.
  9508  type PublicResolverNameChanged struct {
  9509  	Node [32]byte
  9510  	Name string
  9511  	Raw  types.Log // Blockchain specific contextual infos
  9512  }
  9513  
  9514  // FilterNameChanged is a free log retrieval operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  9515  //
  9516  // Solidity: event NameChanged(bytes32 indexed node, string name)
  9517  func (_PublicResolver *PublicResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverNameChangedIterator, error) {
  9518  
  9519  	var nodeRule []interface{}
  9520  	for _, nodeItem := range node {
  9521  		nodeRule = append(nodeRule, nodeItem)
  9522  	}
  9523  
  9524  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
  9525  	if err != nil {
  9526  		return nil, err
  9527  	}
  9528  	return &PublicResolverNameChangedIterator{contract: _PublicResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  9529  }
  9530  
  9531  // WatchNameChanged is a free log subscription operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  9532  //
  9533  // Solidity: event NameChanged(bytes32 indexed node, string name)
  9534  func (_PublicResolver *PublicResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverNameChanged, node [][32]byte) (event.Subscription, error) {
  9535  
  9536  	var nodeRule []interface{}
  9537  	for _, nodeItem := range node {
  9538  		nodeRule = append(nodeRule, nodeItem)
  9539  	}
  9540  
  9541  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  9542  	if err != nil {
  9543  		return nil, err
  9544  	}
  9545  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9546  		defer sub.Unsubscribe()
  9547  		for {
  9548  			select {
  9549  			case log := <-logs:
  9550  				// New log arrived, parse the event and forward to the user
  9551  				event := new(PublicResolverNameChanged)
  9552  				if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  9553  					return err
  9554  				}
  9555  				event.Raw = log
  9556  
  9557  				select {
  9558  				case sink <- event:
  9559  				case err := <-sub.Err():
  9560  					return err
  9561  				case <-quit:
  9562  					return nil
  9563  				}
  9564  			case err := <-sub.Err():
  9565  				return err
  9566  			case <-quit:
  9567  				return nil
  9568  			}
  9569  		}
  9570  	}), nil
  9571  }
  9572  
  9573  // ParseNameChanged is a log parse operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  9574  //
  9575  // Solidity: event NameChanged(bytes32 indexed node, string name)
  9576  func (_PublicResolver *PublicResolverFilterer) ParseNameChanged(log types.Log) (*PublicResolverNameChanged, error) {
  9577  	event := new(PublicResolverNameChanged)
  9578  	if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  9579  		return nil, err
  9580  	}
  9581  	event.Raw = log
  9582  	return event, nil
  9583  }
  9584  
  9585  // PublicResolverPubkeyChangedIterator is returned from FilterPubkeyChanged and is used to iterate over the raw logs and unpacked data for PubkeyChanged events raised by the PublicResolver contract.
  9586  type PublicResolverPubkeyChangedIterator struct {
  9587  	Event *PublicResolverPubkeyChanged // Event containing the contract specifics and raw log
  9588  
  9589  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9590  	event    string              // Event name to use for unpacking event data
  9591  
  9592  	logs chan types.Log        // Log channel receiving the found contract events
  9593  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9594  	done bool                  // Whether the subscription completed delivering logs
  9595  	fail error                 // Occurred error to stop iteration
  9596  }
  9597  
  9598  // Next advances the iterator to the subsequent event, returning whether there
  9599  // are any more events found. In case of a retrieval or parsing error, false is
  9600  // returned and Error() can be queried for the exact failure.
  9601  func (it *PublicResolverPubkeyChangedIterator) Next() bool {
  9602  	// If the iterator failed, stop iterating
  9603  	if it.fail != nil {
  9604  		return false
  9605  	}
  9606  	// If the iterator completed, deliver directly whatever's available
  9607  	if it.done {
  9608  		select {
  9609  		case log := <-it.logs:
  9610  			it.Event = new(PublicResolverPubkeyChanged)
  9611  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9612  				it.fail = err
  9613  				return false
  9614  			}
  9615  			it.Event.Raw = log
  9616  			return true
  9617  
  9618  		default:
  9619  			return false
  9620  		}
  9621  	}
  9622  	// Iterator still in progress, wait for either a data or an error event
  9623  	select {
  9624  	case log := <-it.logs:
  9625  		it.Event = new(PublicResolverPubkeyChanged)
  9626  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9627  			it.fail = err
  9628  			return false
  9629  		}
  9630  		it.Event.Raw = log
  9631  		return true
  9632  
  9633  	case err := <-it.sub.Err():
  9634  		it.done = true
  9635  		it.fail = err
  9636  		return it.Next()
  9637  	}
  9638  }
  9639  
  9640  // Error returns any retrieval or parsing error occurred during filtering.
  9641  func (it *PublicResolverPubkeyChangedIterator) Error() error {
  9642  	return it.fail
  9643  }
  9644  
  9645  // Close terminates the iteration process, releasing any pending underlying
  9646  // resources.
  9647  func (it *PublicResolverPubkeyChangedIterator) Close() error {
  9648  	it.sub.Unsubscribe()
  9649  	return nil
  9650  }
  9651  
  9652  // PublicResolverPubkeyChanged represents a PubkeyChanged event raised by the PublicResolver contract.
  9653  type PublicResolverPubkeyChanged struct {
  9654  	Node [32]byte
  9655  	X    [32]byte
  9656  	Y    [32]byte
  9657  	Raw  types.Log // Blockchain specific contextual infos
  9658  }
  9659  
  9660  // FilterPubkeyChanged is a free log retrieval operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  9661  //
  9662  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  9663  func (_PublicResolver *PublicResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverPubkeyChangedIterator, error) {
  9664  
  9665  	var nodeRule []interface{}
  9666  	for _, nodeItem := range node {
  9667  		nodeRule = append(nodeRule, nodeItem)
  9668  	}
  9669  
  9670  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  9671  	if err != nil {
  9672  		return nil, err
  9673  	}
  9674  	return &PublicResolverPubkeyChangedIterator{contract: _PublicResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  9675  }
  9676  
  9677  // WatchPubkeyChanged is a free log subscription operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  9678  //
  9679  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  9680  func (_PublicResolver *PublicResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverPubkeyChanged, node [][32]byte) (event.Subscription, error) {
  9681  
  9682  	var nodeRule []interface{}
  9683  	for _, nodeItem := range node {
  9684  		nodeRule = append(nodeRule, nodeItem)
  9685  	}
  9686  
  9687  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  9688  	if err != nil {
  9689  		return nil, err
  9690  	}
  9691  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9692  		defer sub.Unsubscribe()
  9693  		for {
  9694  			select {
  9695  			case log := <-logs:
  9696  				// New log arrived, parse the event and forward to the user
  9697  				event := new(PublicResolverPubkeyChanged)
  9698  				if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  9699  					return err
  9700  				}
  9701  				event.Raw = log
  9702  
  9703  				select {
  9704  				case sink <- event:
  9705  				case err := <-sub.Err():
  9706  					return err
  9707  				case <-quit:
  9708  					return nil
  9709  				}
  9710  			case err := <-sub.Err():
  9711  				return err
  9712  			case <-quit:
  9713  				return nil
  9714  			}
  9715  		}
  9716  	}), nil
  9717  }
  9718  
  9719  // ParsePubkeyChanged is a log parse operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  9720  //
  9721  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  9722  func (_PublicResolver *PublicResolverFilterer) ParsePubkeyChanged(log types.Log) (*PublicResolverPubkeyChanged, error) {
  9723  	event := new(PublicResolverPubkeyChanged)
  9724  	if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  9725  		return nil, err
  9726  	}
  9727  	event.Raw = log
  9728  	return event, nil
  9729  }
  9730  
  9731  // PublicResolverTextChangedIterator is returned from FilterTextChanged and is used to iterate over the raw logs and unpacked data for TextChanged events raised by the PublicResolver contract.
  9732  type PublicResolverTextChangedIterator struct {
  9733  	Event *PublicResolverTextChanged // Event containing the contract specifics and raw log
  9734  
  9735  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9736  	event    string              // Event name to use for unpacking event data
  9737  
  9738  	logs chan types.Log        // Log channel receiving the found contract events
  9739  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9740  	done bool                  // Whether the subscription completed delivering logs
  9741  	fail error                 // Occurred error to stop iteration
  9742  }
  9743  
  9744  // Next advances the iterator to the subsequent event, returning whether there
  9745  // are any more events found. In case of a retrieval or parsing error, false is
  9746  // returned and Error() can be queried for the exact failure.
  9747  func (it *PublicResolverTextChangedIterator) Next() bool {
  9748  	// If the iterator failed, stop iterating
  9749  	if it.fail != nil {
  9750  		return false
  9751  	}
  9752  	// If the iterator completed, deliver directly whatever's available
  9753  	if it.done {
  9754  		select {
  9755  		case log := <-it.logs:
  9756  			it.Event = new(PublicResolverTextChanged)
  9757  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9758  				it.fail = err
  9759  				return false
  9760  			}
  9761  			it.Event.Raw = log
  9762  			return true
  9763  
  9764  		default:
  9765  			return false
  9766  		}
  9767  	}
  9768  	// Iterator still in progress, wait for either a data or an error event
  9769  	select {
  9770  	case log := <-it.logs:
  9771  		it.Event = new(PublicResolverTextChanged)
  9772  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9773  			it.fail = err
  9774  			return false
  9775  		}
  9776  		it.Event.Raw = log
  9777  		return true
  9778  
  9779  	case err := <-it.sub.Err():
  9780  		it.done = true
  9781  		it.fail = err
  9782  		return it.Next()
  9783  	}
  9784  }
  9785  
  9786  // Error returns any retrieval or parsing error occurred during filtering.
  9787  func (it *PublicResolverTextChangedIterator) Error() error {
  9788  	return it.fail
  9789  }
  9790  
  9791  // Close terminates the iteration process, releasing any pending underlying
  9792  // resources.
  9793  func (it *PublicResolverTextChangedIterator) Close() error {
  9794  	it.sub.Unsubscribe()
  9795  	return nil
  9796  }
  9797  
  9798  // PublicResolverTextChanged represents a TextChanged event raised by the PublicResolver contract.
  9799  type PublicResolverTextChanged struct {
  9800  	Node       [32]byte
  9801  	IndexedKey common.Hash
  9802  	Key        string
  9803  	Raw        types.Log // Blockchain specific contextual infos
  9804  }
  9805  
  9806  // FilterTextChanged is a free log retrieval operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  9807  //
  9808  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
  9809  func (_PublicResolver *PublicResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node [][32]byte, indexedKey []string) (*PublicResolverTextChangedIterator, error) {
  9810  
  9811  	var nodeRule []interface{}
  9812  	for _, nodeItem := range node {
  9813  		nodeRule = append(nodeRule, nodeItem)
  9814  	}
  9815  	var indexedKeyRule []interface{}
  9816  	for _, indexedKeyItem := range indexedKey {
  9817  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  9818  	}
  9819  
  9820  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  9821  	if err != nil {
  9822  		return nil, err
  9823  	}
  9824  	return &PublicResolverTextChangedIterator{contract: _PublicResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
  9825  }
  9826  
  9827  // WatchTextChanged is a free log subscription operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  9828  //
  9829  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
  9830  func (_PublicResolver *PublicResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverTextChanged, node [][32]byte, indexedKey []string) (event.Subscription, error) {
  9831  
  9832  	var nodeRule []interface{}
  9833  	for _, nodeItem := range node {
  9834  		nodeRule = append(nodeRule, nodeItem)
  9835  	}
  9836  	var indexedKeyRule []interface{}
  9837  	for _, indexedKeyItem := range indexedKey {
  9838  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  9839  	}
  9840  
  9841  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  9842  	if err != nil {
  9843  		return nil, err
  9844  	}
  9845  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9846  		defer sub.Unsubscribe()
  9847  		for {
  9848  			select {
  9849  			case log := <-logs:
  9850  				// New log arrived, parse the event and forward to the user
  9851  				event := new(PublicResolverTextChanged)
  9852  				if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  9853  					return err
  9854  				}
  9855  				event.Raw = log
  9856  
  9857  				select {
  9858  				case sink <- event:
  9859  				case err := <-sub.Err():
  9860  					return err
  9861  				case <-quit:
  9862  					return nil
  9863  				}
  9864  			case err := <-sub.Err():
  9865  				return err
  9866  			case <-quit:
  9867  				return nil
  9868  			}
  9869  		}
  9870  	}), nil
  9871  }
  9872  
  9873  // ParseTextChanged is a log parse operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  9874  //
  9875  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
  9876  func (_PublicResolver *PublicResolverFilterer) ParseTextChanged(log types.Log) (*PublicResolverTextChanged, error) {
  9877  	event := new(PublicResolverTextChanged)
  9878  	if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  9879  		return nil, err
  9880  	}
  9881  	event.Raw = log
  9882  	return event, nil
  9883  }
  9884  
  9885  // ResolverBaseABI is the input ABI used to generate the binding from.
  9886  const ResolverBaseABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}]"
  9887  
  9888  // ResolverBaseFuncSigs maps the 4-byte function signature to its string representation.
  9889  var ResolverBaseFuncSigs = map[string]string{
  9890  	"01ffc9a7": "supportsInterface(bytes4)",
  9891  }
  9892  
  9893  // ResolverBase is an auto generated Go binding around an Ethereum contract.
  9894  type ResolverBase struct {
  9895  	ResolverBaseCaller     // Read-only binding to the contract
  9896  	ResolverBaseTransactor // Write-only binding to the contract
  9897  	ResolverBaseFilterer   // Log filterer for contract events
  9898  }
  9899  
  9900  // ResolverBaseCaller is an auto generated read-only Go binding around an Ethereum contract.
  9901  type ResolverBaseCaller struct {
  9902  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9903  }
  9904  
  9905  // ResolverBaseTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9906  type ResolverBaseTransactor struct {
  9907  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9908  }
  9909  
  9910  // ResolverBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9911  type ResolverBaseFilterer struct {
  9912  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9913  }
  9914  
  9915  // ResolverBaseSession is an auto generated Go binding around an Ethereum contract,
  9916  // with pre-set call and transact options.
  9917  type ResolverBaseSession struct {
  9918  	Contract     *ResolverBase     // Generic contract binding to set the session for
  9919  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  9920  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  9921  }
  9922  
  9923  // ResolverBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  9924  // with pre-set call options.
  9925  type ResolverBaseCallerSession struct {
  9926  	Contract *ResolverBaseCaller // Generic contract caller binding to set the session for
  9927  	CallOpts bind.CallOpts       // Call options to use throughout this session
  9928  }
  9929  
  9930  // ResolverBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  9931  // with pre-set transact options.
  9932  type ResolverBaseTransactorSession struct {
  9933  	Contract     *ResolverBaseTransactor // Generic contract transactor binding to set the session for
  9934  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  9935  }
  9936  
  9937  // ResolverBaseRaw is an auto generated low-level Go binding around an Ethereum contract.
  9938  type ResolverBaseRaw struct {
  9939  	Contract *ResolverBase // Generic contract binding to access the raw methods on
  9940  }
  9941  
  9942  // ResolverBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  9943  type ResolverBaseCallerRaw struct {
  9944  	Contract *ResolverBaseCaller // Generic read-only contract binding to access the raw methods on
  9945  }
  9946  
  9947  // ResolverBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  9948  type ResolverBaseTransactorRaw struct {
  9949  	Contract *ResolverBaseTransactor // Generic write-only contract binding to access the raw methods on
  9950  }
  9951  
  9952  // NewResolverBase creates a new instance of ResolverBase, bound to a specific deployed contract.
  9953  func NewResolverBase(address common.Address, backend bind.ContractBackend) (*ResolverBase, error) {
  9954  	contract, err := bindResolverBase(address, backend, backend, backend)
  9955  	if err != nil {
  9956  		return nil, err
  9957  	}
  9958  	return &ResolverBase{ResolverBaseCaller: ResolverBaseCaller{contract: contract}, ResolverBaseTransactor: ResolverBaseTransactor{contract: contract}, ResolverBaseFilterer: ResolverBaseFilterer{contract: contract}}, nil
  9959  }
  9960  
  9961  // NewResolverBaseCaller creates a new read-only instance of ResolverBase, bound to a specific deployed contract.
  9962  func NewResolverBaseCaller(address common.Address, caller bind.ContractCaller) (*ResolverBaseCaller, error) {
  9963  	contract, err := bindResolverBase(address, caller, nil, nil)
  9964  	if err != nil {
  9965  		return nil, err
  9966  	}
  9967  	return &ResolverBaseCaller{contract: contract}, nil
  9968  }
  9969  
  9970  // NewResolverBaseTransactor creates a new write-only instance of ResolverBase, bound to a specific deployed contract.
  9971  func NewResolverBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ResolverBaseTransactor, error) {
  9972  	contract, err := bindResolverBase(address, nil, transactor, nil)
  9973  	if err != nil {
  9974  		return nil, err
  9975  	}
  9976  	return &ResolverBaseTransactor{contract: contract}, nil
  9977  }
  9978  
  9979  // NewResolverBaseFilterer creates a new log filterer instance of ResolverBase, bound to a specific deployed contract.
  9980  func NewResolverBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ResolverBaseFilterer, error) {
  9981  	contract, err := bindResolverBase(address, nil, nil, filterer)
  9982  	if err != nil {
  9983  		return nil, err
  9984  	}
  9985  	return &ResolverBaseFilterer{contract: contract}, nil
  9986  }
  9987  
  9988  // bindResolverBase binds a generic wrapper to an already deployed contract.
  9989  func bindResolverBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9990  	parsed, err := abi.JSON(strings.NewReader(ResolverBaseABI))
  9991  	if err != nil {
  9992  		return nil, err
  9993  	}
  9994  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9995  }
  9996  
  9997  // Call invokes the (constant) contract method with params as input values and
  9998  // sets the output to result. The result type might be a single field for simple
  9999  // returns, a slice of interfaces for anonymous returns and a struct for named
 10000  // returns.
 10001  func (_ResolverBase *ResolverBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10002  	return _ResolverBase.Contract.ResolverBaseCaller.contract.Call(opts, result, method, params...)
 10003  }
 10004  
 10005  // Transfer initiates a plain transaction to move funds to the contract, calling
 10006  // its default method if one is available.
 10007  func (_ResolverBase *ResolverBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10008  	return _ResolverBase.Contract.ResolverBaseTransactor.contract.Transfer(opts)
 10009  }
 10010  
 10011  // Transact invokes the (paid) contract method with params as input values.
 10012  func (_ResolverBase *ResolverBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10013  	return _ResolverBase.Contract.ResolverBaseTransactor.contract.Transact(opts, method, params...)
 10014  }
 10015  
 10016  // Call invokes the (constant) contract method with params as input values and
 10017  // sets the output to result. The result type might be a single field for simple
 10018  // returns, a slice of interfaces for anonymous returns and a struct for named
 10019  // returns.
 10020  func (_ResolverBase *ResolverBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10021  	return _ResolverBase.Contract.contract.Call(opts, result, method, params...)
 10022  }
 10023  
 10024  // Transfer initiates a plain transaction to move funds to the contract, calling
 10025  // its default method if one is available.
 10026  func (_ResolverBase *ResolverBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10027  	return _ResolverBase.Contract.contract.Transfer(opts)
 10028  }
 10029  
 10030  // Transact invokes the (paid) contract method with params as input values.
 10031  func (_ResolverBase *ResolverBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10032  	return _ResolverBase.Contract.contract.Transact(opts, method, params...)
 10033  }
 10034  
 10035  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10036  //
 10037  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10038  func (_ResolverBase *ResolverBaseCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
 10039  	var out []interface{}
 10040  	err := _ResolverBase.contract.Call(opts, &out, "supportsInterface", interfaceID)
 10041  
 10042  	if err != nil {
 10043  		return *new(bool), err
 10044  	}
 10045  
 10046  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 10047  
 10048  	return out0, err
 10049  
 10050  }
 10051  
 10052  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10053  //
 10054  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10055  func (_ResolverBase *ResolverBaseSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
 10056  	return _ResolverBase.Contract.SupportsInterface(&_ResolverBase.CallOpts, interfaceID)
 10057  }
 10058  
 10059  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10060  //
 10061  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10062  func (_ResolverBase *ResolverBaseCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
 10063  	return _ResolverBase.Contract.SupportsInterface(&_ResolverBase.CallOpts, interfaceID)
 10064  }
 10065  
 10066  // TextResolverABI is the input ABI used to generate the binding from.
 10067  const TextResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"}]"
 10068  
 10069  // TextResolverFuncSigs maps the 4-byte function signature to its string representation.
 10070  var TextResolverFuncSigs = map[string]string{
 10071  	"10f13a8c": "setText(bytes32,string,string)",
 10072  	"01ffc9a7": "supportsInterface(bytes4)",
 10073  	"59d1d43c": "text(bytes32,string)",
 10074  }
 10075  
 10076  // TextResolver is an auto generated Go binding around an Ethereum contract.
 10077  type TextResolver struct {
 10078  	TextResolverCaller     // Read-only binding to the contract
 10079  	TextResolverTransactor // Write-only binding to the contract
 10080  	TextResolverFilterer   // Log filterer for contract events
 10081  }
 10082  
 10083  // TextResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
 10084  type TextResolverCaller struct {
 10085  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10086  }
 10087  
 10088  // TextResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
 10089  type TextResolverTransactor struct {
 10090  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10091  }
 10092  
 10093  // TextResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 10094  type TextResolverFilterer struct {
 10095  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10096  }
 10097  
 10098  // TextResolverSession is an auto generated Go binding around an Ethereum contract,
 10099  // with pre-set call and transact options.
 10100  type TextResolverSession struct {
 10101  	Contract     *TextResolver     // Generic contract binding to set the session for
 10102  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10103  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10104  }
 10105  
 10106  // TextResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 10107  // with pre-set call options.
 10108  type TextResolverCallerSession struct {
 10109  	Contract *TextResolverCaller // Generic contract caller binding to set the session for
 10110  	CallOpts bind.CallOpts       // Call options to use throughout this session
 10111  }
 10112  
 10113  // TextResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 10114  // with pre-set transact options.
 10115  type TextResolverTransactorSession struct {
 10116  	Contract     *TextResolverTransactor // Generic contract transactor binding to set the session for
 10117  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
 10118  }
 10119  
 10120  // TextResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
 10121  type TextResolverRaw struct {
 10122  	Contract *TextResolver // Generic contract binding to access the raw methods on
 10123  }
 10124  
 10125  // TextResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 10126  type TextResolverCallerRaw struct {
 10127  	Contract *TextResolverCaller // Generic read-only contract binding to access the raw methods on
 10128  }
 10129  
 10130  // TextResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 10131  type TextResolverTransactorRaw struct {
 10132  	Contract *TextResolverTransactor // Generic write-only contract binding to access the raw methods on
 10133  }
 10134  
 10135  // NewTextResolver creates a new instance of TextResolver, bound to a specific deployed contract.
 10136  func NewTextResolver(address common.Address, backend bind.ContractBackend) (*TextResolver, error) {
 10137  	contract, err := bindTextResolver(address, backend, backend, backend)
 10138  	if err != nil {
 10139  		return nil, err
 10140  	}
 10141  	return &TextResolver{TextResolverCaller: TextResolverCaller{contract: contract}, TextResolverTransactor: TextResolverTransactor{contract: contract}, TextResolverFilterer: TextResolverFilterer{contract: contract}}, nil
 10142  }
 10143  
 10144  // NewTextResolverCaller creates a new read-only instance of TextResolver, bound to a specific deployed contract.
 10145  func NewTextResolverCaller(address common.Address, caller bind.ContractCaller) (*TextResolverCaller, error) {
 10146  	contract, err := bindTextResolver(address, caller, nil, nil)
 10147  	if err != nil {
 10148  		return nil, err
 10149  	}
 10150  	return &TextResolverCaller{contract: contract}, nil
 10151  }
 10152  
 10153  // NewTextResolverTransactor creates a new write-only instance of TextResolver, bound to a specific deployed contract.
 10154  func NewTextResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*TextResolverTransactor, error) {
 10155  	contract, err := bindTextResolver(address, nil, transactor, nil)
 10156  	if err != nil {
 10157  		return nil, err
 10158  	}
 10159  	return &TextResolverTransactor{contract: contract}, nil
 10160  }
 10161  
 10162  // NewTextResolverFilterer creates a new log filterer instance of TextResolver, bound to a specific deployed contract.
 10163  func NewTextResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*TextResolverFilterer, error) {
 10164  	contract, err := bindTextResolver(address, nil, nil, filterer)
 10165  	if err != nil {
 10166  		return nil, err
 10167  	}
 10168  	return &TextResolverFilterer{contract: contract}, nil
 10169  }
 10170  
 10171  // bindTextResolver binds a generic wrapper to an already deployed contract.
 10172  func bindTextResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10173  	parsed, err := abi.JSON(strings.NewReader(TextResolverABI))
 10174  	if err != nil {
 10175  		return nil, err
 10176  	}
 10177  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10178  }
 10179  
 10180  // Call invokes the (constant) contract method with params as input values and
 10181  // sets the output to result. The result type might be a single field for simple
 10182  // returns, a slice of interfaces for anonymous returns and a struct for named
 10183  // returns.
 10184  func (_TextResolver *TextResolverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10185  	return _TextResolver.Contract.TextResolverCaller.contract.Call(opts, result, method, params...)
 10186  }
 10187  
 10188  // Transfer initiates a plain transaction to move funds to the contract, calling
 10189  // its default method if one is available.
 10190  func (_TextResolver *TextResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10191  	return _TextResolver.Contract.TextResolverTransactor.contract.Transfer(opts)
 10192  }
 10193  
 10194  // Transact invokes the (paid) contract method with params as input values.
 10195  func (_TextResolver *TextResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10196  	return _TextResolver.Contract.TextResolverTransactor.contract.Transact(opts, method, params...)
 10197  }
 10198  
 10199  // Call invokes the (constant) contract method with params as input values and
 10200  // sets the output to result. The result type might be a single field for simple
 10201  // returns, a slice of interfaces for anonymous returns and a struct for named
 10202  // returns.
 10203  func (_TextResolver *TextResolverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10204  	return _TextResolver.Contract.contract.Call(opts, result, method, params...)
 10205  }
 10206  
 10207  // Transfer initiates a plain transaction to move funds to the contract, calling
 10208  // its default method if one is available.
 10209  func (_TextResolver *TextResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10210  	return _TextResolver.Contract.contract.Transfer(opts)
 10211  }
 10212  
 10213  // Transact invokes the (paid) contract method with params as input values.
 10214  func (_TextResolver *TextResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10215  	return _TextResolver.Contract.contract.Transact(opts, method, params...)
 10216  }
 10217  
 10218  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10219  //
 10220  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10221  func (_TextResolver *TextResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
 10222  	var out []interface{}
 10223  	err := _TextResolver.contract.Call(opts, &out, "supportsInterface", interfaceID)
 10224  
 10225  	if err != nil {
 10226  		return *new(bool), err
 10227  	}
 10228  
 10229  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 10230  
 10231  	return out0, err
 10232  
 10233  }
 10234  
 10235  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10236  //
 10237  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10238  func (_TextResolver *TextResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
 10239  	return _TextResolver.Contract.SupportsInterface(&_TextResolver.CallOpts, interfaceID)
 10240  }
 10241  
 10242  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10243  //
 10244  // Solidity: function supportsInterface(bytes4 interfaceID) pure returns(bool)
 10245  func (_TextResolver *TextResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
 10246  	return _TextResolver.Contract.SupportsInterface(&_TextResolver.CallOpts, interfaceID)
 10247  }
 10248  
 10249  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
 10250  //
 10251  // Solidity: function text(bytes32 node, string key) view returns(string)
 10252  func (_TextResolver *TextResolverCaller) Text(opts *bind.CallOpts, node [32]byte, key string) (string, error) {
 10253  	var out []interface{}
 10254  	err := _TextResolver.contract.Call(opts, &out, "text", node, key)
 10255  
 10256  	if err != nil {
 10257  		return *new(string), err
 10258  	}
 10259  
 10260  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 10261  
 10262  	return out0, err
 10263  
 10264  }
 10265  
 10266  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
 10267  //
 10268  // Solidity: function text(bytes32 node, string key) view returns(string)
 10269  func (_TextResolver *TextResolverSession) Text(node [32]byte, key string) (string, error) {
 10270  	return _TextResolver.Contract.Text(&_TextResolver.CallOpts, node, key)
 10271  }
 10272  
 10273  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
 10274  //
 10275  // Solidity: function text(bytes32 node, string key) view returns(string)
 10276  func (_TextResolver *TextResolverCallerSession) Text(node [32]byte, key string) (string, error) {
 10277  	return _TextResolver.Contract.Text(&_TextResolver.CallOpts, node, key)
 10278  }
 10279  
 10280  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
 10281  //
 10282  // Solidity: function setText(bytes32 node, string key, string value) returns()
 10283  func (_TextResolver *TextResolverTransactor) SetText(opts *bind.TransactOpts, node [32]byte, key string, value string) (*types.Transaction, error) {
 10284  	return _TextResolver.contract.Transact(opts, "setText", node, key, value)
 10285  }
 10286  
 10287  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
 10288  //
 10289  // Solidity: function setText(bytes32 node, string key, string value) returns()
 10290  func (_TextResolver *TextResolverSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
 10291  	return _TextResolver.Contract.SetText(&_TextResolver.TransactOpts, node, key, value)
 10292  }
 10293  
 10294  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
 10295  //
 10296  // Solidity: function setText(bytes32 node, string key, string value) returns()
 10297  func (_TextResolver *TextResolverTransactorSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
 10298  	return _TextResolver.Contract.SetText(&_TextResolver.TransactOpts, node, key, value)
 10299  }
 10300  
 10301  // TextResolverTextChangedIterator is returned from FilterTextChanged and is used to iterate over the raw logs and unpacked data for TextChanged events raised by the TextResolver contract.
 10302  type TextResolverTextChangedIterator struct {
 10303  	Event *TextResolverTextChanged // Event containing the contract specifics and raw log
 10304  
 10305  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10306  	event    string              // Event name to use for unpacking event data
 10307  
 10308  	logs chan types.Log        // Log channel receiving the found contract events
 10309  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10310  	done bool                  // Whether the subscription completed delivering logs
 10311  	fail error                 // Occurred error to stop iteration
 10312  }
 10313  
 10314  // Next advances the iterator to the subsequent event, returning whether there
 10315  // are any more events found. In case of a retrieval or parsing error, false is
 10316  // returned and Error() can be queried for the exact failure.
 10317  func (it *TextResolverTextChangedIterator) Next() bool {
 10318  	// If the iterator failed, stop iterating
 10319  	if it.fail != nil {
 10320  		return false
 10321  	}
 10322  	// If the iterator completed, deliver directly whatever's available
 10323  	if it.done {
 10324  		select {
 10325  		case log := <-it.logs:
 10326  			it.Event = new(TextResolverTextChanged)
 10327  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10328  				it.fail = err
 10329  				return false
 10330  			}
 10331  			it.Event.Raw = log
 10332  			return true
 10333  
 10334  		default:
 10335  			return false
 10336  		}
 10337  	}
 10338  	// Iterator still in progress, wait for either a data or an error event
 10339  	select {
 10340  	case log := <-it.logs:
 10341  		it.Event = new(TextResolverTextChanged)
 10342  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10343  			it.fail = err
 10344  			return false
 10345  		}
 10346  		it.Event.Raw = log
 10347  		return true
 10348  
 10349  	case err := <-it.sub.Err():
 10350  		it.done = true
 10351  		it.fail = err
 10352  		return it.Next()
 10353  	}
 10354  }
 10355  
 10356  // Error returns any retrieval or parsing error occurred during filtering.
 10357  func (it *TextResolverTextChangedIterator) Error() error {
 10358  	return it.fail
 10359  }
 10360  
 10361  // Close terminates the iteration process, releasing any pending underlying
 10362  // resources.
 10363  func (it *TextResolverTextChangedIterator) Close() error {
 10364  	it.sub.Unsubscribe()
 10365  	return nil
 10366  }
 10367  
 10368  // TextResolverTextChanged represents a TextChanged event raised by the TextResolver contract.
 10369  type TextResolverTextChanged struct {
 10370  	Node       [32]byte
 10371  	IndexedKey common.Hash
 10372  	Key        string
 10373  	Raw        types.Log // Blockchain specific contextual infos
 10374  }
 10375  
 10376  // FilterTextChanged is a free log retrieval operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
 10377  //
 10378  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
 10379  func (_TextResolver *TextResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node [][32]byte, indexedKey []string) (*TextResolverTextChangedIterator, error) {
 10380  
 10381  	var nodeRule []interface{}
 10382  	for _, nodeItem := range node {
 10383  		nodeRule = append(nodeRule, nodeItem)
 10384  	}
 10385  	var indexedKeyRule []interface{}
 10386  	for _, indexedKeyItem := range indexedKey {
 10387  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
 10388  	}
 10389  
 10390  	logs, sub, err := _TextResolver.contract.FilterLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
 10391  	if err != nil {
 10392  		return nil, err
 10393  	}
 10394  	return &TextResolverTextChangedIterator{contract: _TextResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
 10395  }
 10396  
 10397  // WatchTextChanged is a free log subscription operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
 10398  //
 10399  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
 10400  func (_TextResolver *TextResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *TextResolverTextChanged, node [][32]byte, indexedKey []string) (event.Subscription, error) {
 10401  
 10402  	var nodeRule []interface{}
 10403  	for _, nodeItem := range node {
 10404  		nodeRule = append(nodeRule, nodeItem)
 10405  	}
 10406  	var indexedKeyRule []interface{}
 10407  	for _, indexedKeyItem := range indexedKey {
 10408  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
 10409  	}
 10410  
 10411  	logs, sub, err := _TextResolver.contract.WatchLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
 10412  	if err != nil {
 10413  		return nil, err
 10414  	}
 10415  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10416  		defer sub.Unsubscribe()
 10417  		for {
 10418  			select {
 10419  			case log := <-logs:
 10420  				// New log arrived, parse the event and forward to the user
 10421  				event := new(TextResolverTextChanged)
 10422  				if err := _TextResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
 10423  					return err
 10424  				}
 10425  				event.Raw = log
 10426  
 10427  				select {
 10428  				case sink <- event:
 10429  				case err := <-sub.Err():
 10430  					return err
 10431  				case <-quit:
 10432  					return nil
 10433  				}
 10434  			case err := <-sub.Err():
 10435  				return err
 10436  			case <-quit:
 10437  				return nil
 10438  			}
 10439  		}
 10440  	}), nil
 10441  }
 10442  
 10443  // ParseTextChanged is a log parse operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
 10444  //
 10445  // Solidity: event TextChanged(bytes32 indexed node, string indexed indexedKey, string key)
 10446  func (_TextResolver *TextResolverFilterer) ParseTextChanged(log types.Log) (*TextResolverTextChanged, error) {
 10447  	event := new(TextResolverTextChanged)
 10448  	if err := _TextResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
 10449  		return nil, err
 10450  	}
 10451  	event.Raw = log
 10452  	return event, nil
 10453  }