github.com/daeglee/go-ethereum@v0.0.0-20190504220456-cad3e8d18e9b/contracts/ens/contract/publicresolver.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 contract
     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  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // PublicResolverABI is the input ABI used to generate the binding from.
    31  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\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":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\":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\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"ensAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"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\":\"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\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"}]"
    32  
    33  // PublicResolverBin is the compiled bytecode used for deploying new contracts.
    34  const PublicResolverBin = `0x608060405234801561001057600080fd5b506040516020806112ce8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561126c806100626000396000f3fe6080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100c957806310f13a8c146101115780632203ab56146101e957806329cd62ea14610298578063304e6ade146102ce5780633b3b57de1461035257806359d1d43c14610398578063623195b014610491578063691f34311461051a5780637737221314610544578063bc1c58d1146105c8578063c8690233146105f2578063d5fa2b0014610635575b600080fd5b3480156100d557600080fd5b506100fd600480360360208110156100ec57600080fd5b5035600160e060020a03191661066e565b604080519115158252519081900360200190f35b34801561011d57600080fd5b506101e76004803603606081101561013457600080fd5b8135919081019060408101602082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b9193909290916020810190356401000000008111156101a857600080fd5b8201836020820111156101ba57600080fd5b803590602001918460018302840111640100000000831117156101dc57600080fd5b5090925090506107db565b005b3480156101f557600080fd5b506102196004803603604081101561020c57600080fd5b508035906020013561094d565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102a457600080fd5b506101e7600480360360608110156102bb57600080fd5b5080359060208101359060400135610a65565b3480156102da57600080fd5b506101e7600480360360408110156102f157600080fd5b8135919081019060408101602082013564010000000081111561031357600080fd5b82018360208201111561032557600080fd5b8035906020019184600183028401116401000000008311171561034757600080fd5b509092509050610b65565b34801561035e57600080fd5b5061037c6004803603602081101561037557600080fd5b5035610c7b565b60408051600160a060020a039092168252519081900360200190f35b3480156103a457600080fd5b5061041c600480360360408110156103bb57600080fd5b813591908101906040810160208201356401000000008111156103dd57600080fd5b8201836020820111156103ef57600080fd5b8035906020019184600183028401116401000000008311171561041157600080fd5b509092509050610c96565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045657818101518382015260200161043e565b50505050905090810190601f1680156104835780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049d57600080fd5b506101e7600480360360608110156104b457600080fd5b8135916020810135918101906060810160408201356401000000008111156104db57600080fd5b8201836020820111156104ed57600080fd5b8035906020019184600183028401116401000000008311171561050f57600080fd5b509092509050610d60565b34801561052657600080fd5b5061041c6004803603602081101561053d57600080fd5b5035610e5f565b34801561055057600080fd5b506101e76004803603604081101561056757600080fd5b8135919081019060408101602082013564010000000081111561058957600080fd5b82018360208201111561059b57600080fd5b803590602001918460018302840111640100000000831117156105bd57600080fd5b509092509050610f01565b3480156105d457600080fd5b5061041c600480360360208110156105eb57600080fd5b5035611018565b3480156105fe57600080fd5b5061061c6004803603602081101561061557600080fd5b5035611084565b6040805192835260208301919091528051918290030190f35b34801561064157600080fd5b506101e76004803603604081101561065857600080fd5b5080359060200135600160a060020a03166110a1565b6000600160e060020a031982167f3b3b57de0000000000000000000000000000000000000000000000000000000014806106d15750600160e060020a031982167f691f343100000000000000000000000000000000000000000000000000000000145b806107055750600160e060020a031982167f2203ab5600000000000000000000000000000000000000000000000000000000145b806107395750600160e060020a031982167fc869023300000000000000000000000000000000000000000000000000000000145b8061076d5750600160e060020a031982167f59d1d43c00000000000000000000000000000000000000000000000000000000145b806107a15750600160e060020a031982167fbc1c58d100000000000000000000000000000000000000000000000000000000145b806107d55750600160e060020a031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000546040805160e060020a6302571be302815260048101889052905187923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b15801561082e57600080fd5b505afa158015610842573d6000803e3d6000fd5b505050506040513d602081101561085857600080fd5b5051600160a060020a03161461086d57600080fd5b8282600160008981526020019081526020016000206004018787604051808383808284378083019250505092505050908152602001604051809103902091906108b79291906111a5565b50857fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550868688886040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a2505050505050565b600082815260016020819052604082206060915b848111610a53578085161580159061099a5750600081815260058301602052604081205460026000196101006001841615020190911604115b15610a4b57600081815260058301602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845284939192839190830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b50505050509050935093505050610a5e565b600202610961565b506000925060609150505b9250929050565b6000546040805160e060020a6302571be302815260048101869052905185923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b158015610ab857600080fd5b505afa158015610acc573d6000803e3d6000fd5b505050506040513d6020811015610ae257600080fd5b5051600160a060020a031614610af757600080fd5b604080518082018252848152602080820185815260008881526001835284902092516002840155516003909201919091558151858152908101849052815186927f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46928290030190a250505050565b6000546040805160e060020a6302571be302815260048101869052905185923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b158015610bb857600080fd5b505afa158015610bcc573d6000803e3d6000fd5b505050506040513d6020811015610be257600080fd5b5051600160a060020a031614610bf757600080fd5b6000848152600160205260409020610c139060060184846111a5565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578848460405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a250505050565b600090815260016020526040902054600160a060020a031690565b6060600160008581526020019081526020016000206004018383604051808383808284379190910194855250506040805160209481900385018120805460026001821615610100026000190190911604601f81018790048702830187019093528282529094909350909150830182828015610d525780601f10610d2757610100808354040283529160200191610d52565b820191906000526020600020905b815481529060010190602001808311610d3557829003601f168201915b505050505090509392505050565b6000546040805160e060020a6302571be302815260048101879052905186923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b158015610db357600080fd5b505afa158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b5051600160a060020a031614610df257600080fd5b6000198401841615610e0357600080fd5b60008581526001602090815260408083208784526005019091529020610e2a9084846111a5565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b600081815260016020818152604092839020820180548451600294821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610ef55780601f10610eca57610100808354040283529160200191610ef5565b820191906000526020600020905b815481529060010190602001808311610ed857829003601f168201915b50505050509050919050565b6000546040805160e060020a6302571be302815260048101869052905185923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d6020811015610f7e57600080fd5b5051600160a060020a031614610f9357600080fd5b6000848152600160208190526040909120610fb0910184846111a5565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7848460405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a250505050565b60008181526001602081815260409283902060060180548451600294821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610ef55780601f10610eca57610100808354040283529160200191610ef5565b600090815260016020526040902060028101546003909101549091565b6000546040805160e060020a6302571be302815260048101859052905184923392600160a060020a03909116916302571be391602480820192602092909190829003018186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b5051600160a060020a03161461113357600080fd5b600083815260016020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386169081179091558251908152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111e65782800160ff19823516178555611213565b82800160010185558215611213579182015b828111156112135782358255916020019190600101906111f8565b5061121f929150611223565b5090565b61123d91905b8082111561121f5760008155600101611229565b9056fea165627a7a7230582047f310fc746ab2e282cf63ba794d20abb361f9284c6c5f2a2e26151e5b7fab600029`
    35  
    36  // DeployPublicResolver deploys a new Ethereum contract, binding an instance of PublicResolver to it.
    37  func DeployPublicResolver(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address) (common.Address, *types.Transaction, *PublicResolver, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PublicResolverBin), backend, ensAddr)
    43  	if err != nil {
    44  		return common.Address{}, nil, nil, err
    45  	}
    46  	return address, tx, &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
    47  }
    48  
    49  // PublicResolver is an auto generated Go binding around an Ethereum contract.
    50  type PublicResolver struct {
    51  	PublicResolverCaller     // Read-only binding to the contract
    52  	PublicResolverTransactor // Write-only binding to the contract
    53  	PublicResolverFilterer   // Log filterer for contract events
    54  }
    55  
    56  // PublicResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
    57  type PublicResolverCaller struct {
    58  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    59  }
    60  
    61  // PublicResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
    62  type PublicResolverTransactor struct {
    63  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    64  }
    65  
    66  // PublicResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    67  type PublicResolverFilterer struct {
    68  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    69  }
    70  
    71  // PublicResolverSession is an auto generated Go binding around an Ethereum contract,
    72  // with pre-set call and transact options.
    73  type PublicResolverSession struct {
    74  	Contract     *PublicResolver   // Generic contract binding to set the session for
    75  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    76  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    77  }
    78  
    79  // PublicResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    80  // with pre-set call options.
    81  type PublicResolverCallerSession struct {
    82  	Contract *PublicResolverCaller // Generic contract caller binding to set the session for
    83  	CallOpts bind.CallOpts         // Call options to use throughout this session
    84  }
    85  
    86  // PublicResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    87  // with pre-set transact options.
    88  type PublicResolverTransactorSession struct {
    89  	Contract     *PublicResolverTransactor // Generic contract transactor binding to set the session for
    90  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
    91  }
    92  
    93  // PublicResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
    94  type PublicResolverRaw struct {
    95  	Contract *PublicResolver // Generic contract binding to access the raw methods on
    96  }
    97  
    98  // PublicResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    99  type PublicResolverCallerRaw struct {
   100  	Contract *PublicResolverCaller // Generic read-only contract binding to access the raw methods on
   101  }
   102  
   103  // PublicResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   104  type PublicResolverTransactorRaw struct {
   105  	Contract *PublicResolverTransactor // Generic write-only contract binding to access the raw methods on
   106  }
   107  
   108  // NewPublicResolver creates a new instance of PublicResolver, bound to a specific deployed contract.
   109  func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
   110  	contract, err := bindPublicResolver(address, backend, backend, backend)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  	return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
   115  }
   116  
   117  // NewPublicResolverCaller creates a new read-only instance of PublicResolver, bound to a specific deployed contract.
   118  func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
   119  	contract, err := bindPublicResolver(address, caller, nil, nil)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  	return &PublicResolverCaller{contract: contract}, nil
   124  }
   125  
   126  // NewPublicResolverTransactor creates a new write-only instance of PublicResolver, bound to a specific deployed contract.
   127  func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
   128  	contract, err := bindPublicResolver(address, nil, transactor, nil)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	return &PublicResolverTransactor{contract: contract}, nil
   133  }
   134  
   135  // NewPublicResolverFilterer creates a new log filterer instance of PublicResolver, bound to a specific deployed contract.
   136  func NewPublicResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PublicResolverFilterer, error) {
   137  	contract, err := bindPublicResolver(address, nil, nil, filterer)
   138  	if err != nil {
   139  		return nil, err
   140  	}
   141  	return &PublicResolverFilterer{contract: contract}, nil
   142  }
   143  
   144  // bindPublicResolver binds a generic wrapper to an already deployed contract.
   145  func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   146  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
   147  	if err != nil {
   148  		return nil, err
   149  	}
   150  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   151  }
   152  
   153  // Call invokes the (constant) contract method with params as input values and
   154  // sets the output to result. The result type might be a single field for simple
   155  // returns, a slice of interfaces for anonymous returns and a struct for named
   156  // returns.
   157  func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   158  	return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
   159  }
   160  
   161  // Transfer initiates a plain transaction to move funds to the contract, calling
   162  // its default method if one is available.
   163  func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   164  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
   165  }
   166  
   167  // Transact invokes the (paid) contract method with params as input values.
   168  func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   169  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
   170  }
   171  
   172  // Call invokes the (constant) contract method with params as input values and
   173  // sets the output to result. The result type might be a single field for simple
   174  // returns, a slice of interfaces for anonymous returns and a struct for named
   175  // returns.
   176  func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   177  	return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
   178  }
   179  
   180  // Transfer initiates a plain transaction to move funds to the contract, calling
   181  // its default method if one is available.
   182  func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   183  	return _PublicResolver.Contract.contract.Transfer(opts)
   184  }
   185  
   186  // Transact invokes the (paid) contract method with params as input values.
   187  func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   188  	return _PublicResolver.Contract.contract.Transact(opts, method, params...)
   189  }
   190  
   191  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   192  //
   193  // Solidity: function ABI(bytes32 node, uint256 contentTypes) constant returns(uint256, bytes)
   194  func (_PublicResolver *PublicResolverCaller) ABI(opts *bind.CallOpts, node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   195  	var (
   196  		ret0 = new(*big.Int)
   197  		ret1 = new([]byte)
   198  	)
   199  	out := &[]interface{}{
   200  		ret0,
   201  		ret1,
   202  	}
   203  	err := _PublicResolver.contract.Call(opts, out, "ABI", node, contentTypes)
   204  	return *ret0, *ret1, err
   205  }
   206  
   207  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   208  //
   209  // Solidity: function ABI(bytes32 node, uint256 contentTypes) constant returns(uint256, bytes)
   210  func (_PublicResolver *PublicResolverSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   211  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   212  }
   213  
   214  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   215  //
   216  // Solidity: function ABI(bytes32 node, uint256 contentTypes) constant returns(uint256, bytes)
   217  func (_PublicResolver *PublicResolverCallerSession) ABI(node [32]byte, contentTypes *big.Int) (*big.Int, []byte, error) {
   218  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   219  }
   220  
   221  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   222  //
   223  // Solidity: function addr(bytes32 node) constant returns(address)
   224  func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   225  	var (
   226  		ret0 = new(common.Address)
   227  	)
   228  	out := ret0
   229  	err := _PublicResolver.contract.Call(opts, out, "addr", node)
   230  	return *ret0, err
   231  }
   232  
   233  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   234  //
   235  // Solidity: function addr(bytes32 node) constant returns(address)
   236  func (_PublicResolver *PublicResolverSession) Addr(node [32]byte) (common.Address, error) {
   237  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   238  }
   239  
   240  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   241  //
   242  // Solidity: function addr(bytes32 node) constant returns(address)
   243  func (_PublicResolver *PublicResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
   244  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   245  }
   246  
   247  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
   248  //
   249  // Solidity: function contenthash(bytes32 node) constant returns(bytes)
   250  func (_PublicResolver *PublicResolverCaller) Contenthash(opts *bind.CallOpts, node [32]byte) ([]byte, error) {
   251  	var (
   252  		ret0 = new([]byte)
   253  	)
   254  	out := ret0
   255  	err := _PublicResolver.contract.Call(opts, out, "contenthash", node)
   256  	return *ret0, err
   257  }
   258  
   259  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
   260  //
   261  // Solidity: function contenthash(bytes32 node) constant returns(bytes)
   262  func (_PublicResolver *PublicResolverSession) Contenthash(node [32]byte) ([]byte, error) {
   263  	return _PublicResolver.Contract.Contenthash(&_PublicResolver.CallOpts, node)
   264  }
   265  
   266  // Contenthash is a free data retrieval call binding the contract method 0xbc1c58d1.
   267  //
   268  // Solidity: function contenthash(bytes32 node) constant returns(bytes)
   269  func (_PublicResolver *PublicResolverCallerSession) Contenthash(node [32]byte) ([]byte, error) {
   270  	return _PublicResolver.Contract.Contenthash(&_PublicResolver.CallOpts, node)
   271  }
   272  
   273  // Name is a free data retrieval call binding the contract method 0x691f3431.
   274  //
   275  // Solidity: function name(bytes32 node) constant returns(string)
   276  func (_PublicResolver *PublicResolverCaller) Name(opts *bind.CallOpts, node [32]byte) (string, error) {
   277  	var (
   278  		ret0 = new(string)
   279  	)
   280  	out := ret0
   281  	err := _PublicResolver.contract.Call(opts, out, "name", node)
   282  	return *ret0, err
   283  }
   284  
   285  // Name is a free data retrieval call binding the contract method 0x691f3431.
   286  //
   287  // Solidity: function name(bytes32 node) constant returns(string)
   288  func (_PublicResolver *PublicResolverSession) Name(node [32]byte) (string, error) {
   289  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   290  }
   291  
   292  // Name is a free data retrieval call binding the contract method 0x691f3431.
   293  //
   294  // Solidity: function name(bytes32 node) constant returns(string)
   295  func (_PublicResolver *PublicResolverCallerSession) Name(node [32]byte) (string, error) {
   296  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   297  }
   298  
   299  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   300  //
   301  // Solidity: function pubkey(bytes32 node) constant returns(bytes32 x, bytes32 y)
   302  func (_PublicResolver *PublicResolverCaller) Pubkey(opts *bind.CallOpts, node [32]byte) (struct {
   303  	X [32]byte
   304  	Y [32]byte
   305  }, error) {
   306  	ret := new(struct {
   307  		X [32]byte
   308  		Y [32]byte
   309  	})
   310  	out := ret
   311  	err := _PublicResolver.contract.Call(opts, out, "pubkey", node)
   312  	return *ret, err
   313  }
   314  
   315  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   316  //
   317  // Solidity: function pubkey(bytes32 node) constant returns(bytes32 x, bytes32 y)
   318  func (_PublicResolver *PublicResolverSession) Pubkey(node [32]byte) (struct {
   319  	X [32]byte
   320  	Y [32]byte
   321  }, error) {
   322  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   323  }
   324  
   325  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   326  //
   327  // Solidity: function pubkey(bytes32 node) constant returns(bytes32 x, bytes32 y)
   328  func (_PublicResolver *PublicResolverCallerSession) Pubkey(node [32]byte) (struct {
   329  	X [32]byte
   330  	Y [32]byte
   331  }, error) {
   332  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   333  }
   334  
   335  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   336  //
   337  // Solidity: function supportsInterface(bytes4 interfaceID) constant returns(bool)
   338  func (_PublicResolver *PublicResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   339  	var (
   340  		ret0 = new(bool)
   341  	)
   342  	out := ret0
   343  	err := _PublicResolver.contract.Call(opts, out, "supportsInterface", interfaceID)
   344  	return *ret0, err
   345  }
   346  
   347  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   348  //
   349  // Solidity: function supportsInterface(bytes4 interfaceID) constant returns(bool)
   350  func (_PublicResolver *PublicResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   351  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   352  }
   353  
   354  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   355  //
   356  // Solidity: function supportsInterface(bytes4 interfaceID) constant returns(bool)
   357  func (_PublicResolver *PublicResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   358  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   359  }
   360  
   361  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   362  //
   363  // Solidity: function text(bytes32 node, string key) constant returns(string)
   364  func (_PublicResolver *PublicResolverCaller) Text(opts *bind.CallOpts, node [32]byte, key string) (string, error) {
   365  	var (
   366  		ret0 = new(string)
   367  	)
   368  	out := ret0
   369  	err := _PublicResolver.contract.Call(opts, out, "text", node, key)
   370  	return *ret0, err
   371  }
   372  
   373  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   374  //
   375  // Solidity: function text(bytes32 node, string key) constant returns(string)
   376  func (_PublicResolver *PublicResolverSession) Text(node [32]byte, key string) (string, error) {
   377  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   378  }
   379  
   380  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   381  //
   382  // Solidity: function text(bytes32 node, string key) constant returns(string)
   383  func (_PublicResolver *PublicResolverCallerSession) Text(node [32]byte, key string) (string, error) {
   384  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   385  }
   386  
   387  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   388  //
   389  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   390  func (_PublicResolver *PublicResolverTransactor) SetABI(opts *bind.TransactOpts, node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   391  	return _PublicResolver.contract.Transact(opts, "setABI", node, contentType, data)
   392  }
   393  
   394  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   395  //
   396  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   397  func (_PublicResolver *PublicResolverSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   398  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   399  }
   400  
   401  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   402  //
   403  // Solidity: function setABI(bytes32 node, uint256 contentType, bytes data) returns()
   404  func (_PublicResolver *PublicResolverTransactorSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   405  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   406  }
   407  
   408  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   409  //
   410  // Solidity: function setAddr(bytes32 node, address addr) returns()
   411  func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, addr common.Address) (*types.Transaction, error) {
   412  	return _PublicResolver.contract.Transact(opts, "setAddr", node, addr)
   413  }
   414  
   415  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   416  //
   417  // Solidity: function setAddr(bytes32 node, address addr) returns()
   418  func (_PublicResolver *PublicResolverSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   419  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   420  }
   421  
   422  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   423  //
   424  // Solidity: function setAddr(bytes32 node, address addr) returns()
   425  func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   426  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   427  }
   428  
   429  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
   430  //
   431  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
   432  func (_PublicResolver *PublicResolverTransactor) SetContenthash(opts *bind.TransactOpts, node [32]byte, hash []byte) (*types.Transaction, error) {
   433  	return _PublicResolver.contract.Transact(opts, "setContenthash", node, hash)
   434  }
   435  
   436  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
   437  //
   438  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
   439  func (_PublicResolver *PublicResolverSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
   440  	return _PublicResolver.Contract.SetContenthash(&_PublicResolver.TransactOpts, node, hash)
   441  }
   442  
   443  // SetContenthash is a paid mutator transaction binding the contract method 0x304e6ade.
   444  //
   445  // Solidity: function setContenthash(bytes32 node, bytes hash) returns()
   446  func (_PublicResolver *PublicResolverTransactorSession) SetContenthash(node [32]byte, hash []byte) (*types.Transaction, error) {
   447  	return _PublicResolver.Contract.SetContenthash(&_PublicResolver.TransactOpts, node, hash)
   448  }
   449  
   450  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   451  //
   452  // Solidity: function setName(bytes32 node, string name) returns()
   453  func (_PublicResolver *PublicResolverTransactor) SetName(opts *bind.TransactOpts, node [32]byte, name string) (*types.Transaction, error) {
   454  	return _PublicResolver.contract.Transact(opts, "setName", node, name)
   455  }
   456  
   457  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   458  //
   459  // Solidity: function setName(bytes32 node, string name) returns()
   460  func (_PublicResolver *PublicResolverSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   461  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   462  }
   463  
   464  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   465  //
   466  // Solidity: function setName(bytes32 node, string name) returns()
   467  func (_PublicResolver *PublicResolverTransactorSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   468  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   469  }
   470  
   471  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   472  //
   473  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
   474  func (_PublicResolver *PublicResolverTransactor) SetPubkey(opts *bind.TransactOpts, node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   475  	return _PublicResolver.contract.Transact(opts, "setPubkey", node, x, y)
   476  }
   477  
   478  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   479  //
   480  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
   481  func (_PublicResolver *PublicResolverSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   482  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   483  }
   484  
   485  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   486  //
   487  // Solidity: function setPubkey(bytes32 node, bytes32 x, bytes32 y) returns()
   488  func (_PublicResolver *PublicResolverTransactorSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   489  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   490  }
   491  
   492  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   493  //
   494  // Solidity: function setText(bytes32 node, string key, string value) returns()
   495  func (_PublicResolver *PublicResolverTransactor) SetText(opts *bind.TransactOpts, node [32]byte, key string, value string) (*types.Transaction, error) {
   496  	return _PublicResolver.contract.Transact(opts, "setText", node, key, value)
   497  }
   498  
   499  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   500  //
   501  // Solidity: function setText(bytes32 node, string key, string value) returns()
   502  func (_PublicResolver *PublicResolverSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   503  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   504  }
   505  
   506  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   507  //
   508  // Solidity: function setText(bytes32 node, string key, string value) returns()
   509  func (_PublicResolver *PublicResolverTransactorSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   510  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   511  }
   512  
   513  // 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.
   514  type PublicResolverABIChangedIterator struct {
   515  	Event *PublicResolverABIChanged // Event containing the contract specifics and raw log
   516  
   517  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   518  	event    string              // Event name to use for unpacking event data
   519  
   520  	logs chan types.Log        // Log channel receiving the found contract events
   521  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   522  	done bool                  // Whether the subscription completed delivering logs
   523  	fail error                 // Occurred error to stop iteration
   524  }
   525  
   526  // Next advances the iterator to the subsequent event, returning whether there
   527  // are any more events found. In case of a retrieval or parsing error, false is
   528  // returned and Error() can be queried for the exact failure.
   529  func (it *PublicResolverABIChangedIterator) Next() bool {
   530  	// If the iterator failed, stop iterating
   531  	if it.fail != nil {
   532  		return false
   533  	}
   534  	// If the iterator completed, deliver directly whatever's available
   535  	if it.done {
   536  		select {
   537  		case log := <-it.logs:
   538  			it.Event = new(PublicResolverABIChanged)
   539  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   540  				it.fail = err
   541  				return false
   542  			}
   543  			it.Event.Raw = log
   544  			return true
   545  
   546  		default:
   547  			return false
   548  		}
   549  	}
   550  	// Iterator still in progress, wait for either a data or an error event
   551  	select {
   552  	case log := <-it.logs:
   553  		it.Event = new(PublicResolverABIChanged)
   554  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   555  			it.fail = err
   556  			return false
   557  		}
   558  		it.Event.Raw = log
   559  		return true
   560  
   561  	case err := <-it.sub.Err():
   562  		it.done = true
   563  		it.fail = err
   564  		return it.Next()
   565  	}
   566  }
   567  
   568  // Error returns any retrieval or parsing error occurred during filtering.
   569  func (it *PublicResolverABIChangedIterator) Error() error {
   570  	return it.fail
   571  }
   572  
   573  // Close terminates the iteration process, releasing any pending underlying
   574  // resources.
   575  func (it *PublicResolverABIChangedIterator) Close() error {
   576  	it.sub.Unsubscribe()
   577  	return nil
   578  }
   579  
   580  // PublicResolverABIChanged represents a ABIChanged event raised by the PublicResolver contract.
   581  type PublicResolverABIChanged struct {
   582  	Node        [32]byte
   583  	ContentType *big.Int
   584  	Raw         types.Log // Blockchain specific contextual infos
   585  }
   586  
   587  // FilterABIChanged is a free log retrieval operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   588  //
   589  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
   590  func (_PublicResolver *PublicResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node [][32]byte, contentType []*big.Int) (*PublicResolverABIChangedIterator, error) {
   591  
   592  	var nodeRule []interface{}
   593  	for _, nodeItem := range node {
   594  		nodeRule = append(nodeRule, nodeItem)
   595  	}
   596  	var contentTypeRule []interface{}
   597  	for _, contentTypeItem := range contentType {
   598  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   599  	}
   600  
   601  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   602  	if err != nil {
   603  		return nil, err
   604  	}
   605  	return &PublicResolverABIChangedIterator{contract: _PublicResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
   606  }
   607  
   608  // WatchABIChanged is a free log subscription operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   609  //
   610  // Solidity: event ABIChanged(bytes32 indexed node, uint256 indexed contentType)
   611  func (_PublicResolver *PublicResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverABIChanged, node [][32]byte, contentType []*big.Int) (event.Subscription, error) {
   612  
   613  	var nodeRule []interface{}
   614  	for _, nodeItem := range node {
   615  		nodeRule = append(nodeRule, nodeItem)
   616  	}
   617  	var contentTypeRule []interface{}
   618  	for _, contentTypeItem := range contentType {
   619  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   620  	}
   621  
   622  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   623  	if err != nil {
   624  		return nil, err
   625  	}
   626  	return event.NewSubscription(func(quit <-chan struct{}) error {
   627  		defer sub.Unsubscribe()
   628  		for {
   629  			select {
   630  			case log := <-logs:
   631  				// New log arrived, parse the event and forward to the user
   632  				event := new(PublicResolverABIChanged)
   633  				if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   634  					return err
   635  				}
   636  				event.Raw = log
   637  
   638  				select {
   639  				case sink <- event:
   640  				case err := <-sub.Err():
   641  					return err
   642  				case <-quit:
   643  					return nil
   644  				}
   645  			case err := <-sub.Err():
   646  				return err
   647  			case <-quit:
   648  				return nil
   649  			}
   650  		}
   651  	}), nil
   652  }
   653  
   654  // 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.
   655  type PublicResolverAddrChangedIterator struct {
   656  	Event *PublicResolverAddrChanged // Event containing the contract specifics and raw log
   657  
   658  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   659  	event    string              // Event name to use for unpacking event data
   660  
   661  	logs chan types.Log        // Log channel receiving the found contract events
   662  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   663  	done bool                  // Whether the subscription completed delivering logs
   664  	fail error                 // Occurred error to stop iteration
   665  }
   666  
   667  // Next advances the iterator to the subsequent event, returning whether there
   668  // are any more events found. In case of a retrieval or parsing error, false is
   669  // returned and Error() can be queried for the exact failure.
   670  func (it *PublicResolverAddrChangedIterator) Next() bool {
   671  	// If the iterator failed, stop iterating
   672  	if it.fail != nil {
   673  		return false
   674  	}
   675  	// If the iterator completed, deliver directly whatever's available
   676  	if it.done {
   677  		select {
   678  		case log := <-it.logs:
   679  			it.Event = new(PublicResolverAddrChanged)
   680  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   681  				it.fail = err
   682  				return false
   683  			}
   684  			it.Event.Raw = log
   685  			return true
   686  
   687  		default:
   688  			return false
   689  		}
   690  	}
   691  	// Iterator still in progress, wait for either a data or an error event
   692  	select {
   693  	case log := <-it.logs:
   694  		it.Event = new(PublicResolverAddrChanged)
   695  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   696  			it.fail = err
   697  			return false
   698  		}
   699  		it.Event.Raw = log
   700  		return true
   701  
   702  	case err := <-it.sub.Err():
   703  		it.done = true
   704  		it.fail = err
   705  		return it.Next()
   706  	}
   707  }
   708  
   709  // Error returns any retrieval or parsing error occurred during filtering.
   710  func (it *PublicResolverAddrChangedIterator) Error() error {
   711  	return it.fail
   712  }
   713  
   714  // Close terminates the iteration process, releasing any pending underlying
   715  // resources.
   716  func (it *PublicResolverAddrChangedIterator) Close() error {
   717  	it.sub.Unsubscribe()
   718  	return nil
   719  }
   720  
   721  // PublicResolverAddrChanged represents a AddrChanged event raised by the PublicResolver contract.
   722  type PublicResolverAddrChanged struct {
   723  	Node [32]byte
   724  	A    common.Address
   725  	Raw  types.Log // Blockchain specific contextual infos
   726  }
   727  
   728  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   729  //
   730  // Solidity: event AddrChanged(bytes32 indexed node, address a)
   731  func (_PublicResolver *PublicResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverAddrChangedIterator, error) {
   732  
   733  	var nodeRule []interface{}
   734  	for _, nodeItem := range node {
   735  		nodeRule = append(nodeRule, nodeItem)
   736  	}
   737  
   738  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
   739  	if err != nil {
   740  		return nil, err
   741  	}
   742  	return &PublicResolverAddrChangedIterator{contract: _PublicResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
   743  }
   744  
   745  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   746  //
   747  // Solidity: event AddrChanged(bytes32 indexed node, address a)
   748  func (_PublicResolver *PublicResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
   749  
   750  	var nodeRule []interface{}
   751  	for _, nodeItem := range node {
   752  		nodeRule = append(nodeRule, nodeItem)
   753  	}
   754  
   755  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
   756  	if err != nil {
   757  		return nil, err
   758  	}
   759  	return event.NewSubscription(func(quit <-chan struct{}) error {
   760  		defer sub.Unsubscribe()
   761  		for {
   762  			select {
   763  			case log := <-logs:
   764  				// New log arrived, parse the event and forward to the user
   765  				event := new(PublicResolverAddrChanged)
   766  				if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   767  					return err
   768  				}
   769  				event.Raw = log
   770  
   771  				select {
   772  				case sink <- event:
   773  				case err := <-sub.Err():
   774  					return err
   775  				case <-quit:
   776  					return nil
   777  				}
   778  			case err := <-sub.Err():
   779  				return err
   780  			case <-quit:
   781  				return nil
   782  			}
   783  		}
   784  	}), nil
   785  }
   786  
   787  // 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.
   788  type PublicResolverContenthashChangedIterator struct {
   789  	Event *PublicResolverContenthashChanged // Event containing the contract specifics and raw log
   790  
   791  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   792  	event    string              // Event name to use for unpacking event data
   793  
   794  	logs chan types.Log        // Log channel receiving the found contract events
   795  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   796  	done bool                  // Whether the subscription completed delivering logs
   797  	fail error                 // Occurred error to stop iteration
   798  }
   799  
   800  // Next advances the iterator to the subsequent event, returning whether there
   801  // are any more events found. In case of a retrieval or parsing error, false is
   802  // returned and Error() can be queried for the exact failure.
   803  func (it *PublicResolverContenthashChangedIterator) Next() bool {
   804  	// If the iterator failed, stop iterating
   805  	if it.fail != nil {
   806  		return false
   807  	}
   808  	// If the iterator completed, deliver directly whatever's available
   809  	if it.done {
   810  		select {
   811  		case log := <-it.logs:
   812  			it.Event = new(PublicResolverContenthashChanged)
   813  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   814  				it.fail = err
   815  				return false
   816  			}
   817  			it.Event.Raw = log
   818  			return true
   819  
   820  		default:
   821  			return false
   822  		}
   823  	}
   824  	// Iterator still in progress, wait for either a data or an error event
   825  	select {
   826  	case log := <-it.logs:
   827  		it.Event = new(PublicResolverContenthashChanged)
   828  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   829  			it.fail = err
   830  			return false
   831  		}
   832  		it.Event.Raw = log
   833  		return true
   834  
   835  	case err := <-it.sub.Err():
   836  		it.done = true
   837  		it.fail = err
   838  		return it.Next()
   839  	}
   840  }
   841  
   842  // Error returns any retrieval or parsing error occurred during filtering.
   843  func (it *PublicResolverContenthashChangedIterator) Error() error {
   844  	return it.fail
   845  }
   846  
   847  // Close terminates the iteration process, releasing any pending underlying
   848  // resources.
   849  func (it *PublicResolverContenthashChangedIterator) Close() error {
   850  	it.sub.Unsubscribe()
   851  	return nil
   852  }
   853  
   854  // PublicResolverContenthashChanged represents a ContenthashChanged event raised by the PublicResolver contract.
   855  type PublicResolverContenthashChanged struct {
   856  	Node [32]byte
   857  	Hash []byte
   858  	Raw  types.Log // Blockchain specific contextual infos
   859  }
   860  
   861  // FilterContenthashChanged is a free log retrieval operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
   862  //
   863  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
   864  func (_PublicResolver *PublicResolverFilterer) FilterContenthashChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverContenthashChangedIterator, error) {
   865  
   866  	var nodeRule []interface{}
   867  	for _, nodeItem := range node {
   868  		nodeRule = append(nodeRule, nodeItem)
   869  	}
   870  
   871  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ContenthashChanged", nodeRule)
   872  	if err != nil {
   873  		return nil, err
   874  	}
   875  	return &PublicResolverContenthashChangedIterator{contract: _PublicResolver.contract, event: "ContenthashChanged", logs: logs, sub: sub}, nil
   876  }
   877  
   878  // WatchContenthashChanged is a free log subscription operation binding the contract event 0xe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578.
   879  //
   880  // Solidity: event ContenthashChanged(bytes32 indexed node, bytes hash)
   881  func (_PublicResolver *PublicResolverFilterer) WatchContenthashChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContenthashChanged, node [][32]byte) (event.Subscription, error) {
   882  
   883  	var nodeRule []interface{}
   884  	for _, nodeItem := range node {
   885  		nodeRule = append(nodeRule, nodeItem)
   886  	}
   887  
   888  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContenthashChanged", nodeRule)
   889  	if err != nil {
   890  		return nil, err
   891  	}
   892  	return event.NewSubscription(func(quit <-chan struct{}) error {
   893  		defer sub.Unsubscribe()
   894  		for {
   895  			select {
   896  			case log := <-logs:
   897  				// New log arrived, parse the event and forward to the user
   898  				event := new(PublicResolverContenthashChanged)
   899  				if err := _PublicResolver.contract.UnpackLog(event, "ContenthashChanged", log); err != nil {
   900  					return err
   901  				}
   902  				event.Raw = log
   903  
   904  				select {
   905  				case sink <- event:
   906  				case err := <-sub.Err():
   907  					return err
   908  				case <-quit:
   909  					return nil
   910  				}
   911  			case err := <-sub.Err():
   912  				return err
   913  			case <-quit:
   914  				return nil
   915  			}
   916  		}
   917  	}), nil
   918  }
   919  
   920  // 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.
   921  type PublicResolverNameChangedIterator struct {
   922  	Event *PublicResolverNameChanged // Event containing the contract specifics and raw log
   923  
   924  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   925  	event    string              // Event name to use for unpacking event data
   926  
   927  	logs chan types.Log        // Log channel receiving the found contract events
   928  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   929  	done bool                  // Whether the subscription completed delivering logs
   930  	fail error                 // Occurred error to stop iteration
   931  }
   932  
   933  // Next advances the iterator to the subsequent event, returning whether there
   934  // are any more events found. In case of a retrieval or parsing error, false is
   935  // returned and Error() can be queried for the exact failure.
   936  func (it *PublicResolverNameChangedIterator) Next() bool {
   937  	// If the iterator failed, stop iterating
   938  	if it.fail != nil {
   939  		return false
   940  	}
   941  	// If the iterator completed, deliver directly whatever's available
   942  	if it.done {
   943  		select {
   944  		case log := <-it.logs:
   945  			it.Event = new(PublicResolverNameChanged)
   946  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   947  				it.fail = err
   948  				return false
   949  			}
   950  			it.Event.Raw = log
   951  			return true
   952  
   953  		default:
   954  			return false
   955  		}
   956  	}
   957  	// Iterator still in progress, wait for either a data or an error event
   958  	select {
   959  	case log := <-it.logs:
   960  		it.Event = new(PublicResolverNameChanged)
   961  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   962  			it.fail = err
   963  			return false
   964  		}
   965  		it.Event.Raw = log
   966  		return true
   967  
   968  	case err := <-it.sub.Err():
   969  		it.done = true
   970  		it.fail = err
   971  		return it.Next()
   972  	}
   973  }
   974  
   975  // Error returns any retrieval or parsing error occurred during filtering.
   976  func (it *PublicResolverNameChangedIterator) Error() error {
   977  	return it.fail
   978  }
   979  
   980  // Close terminates the iteration process, releasing any pending underlying
   981  // resources.
   982  func (it *PublicResolverNameChangedIterator) Close() error {
   983  	it.sub.Unsubscribe()
   984  	return nil
   985  }
   986  
   987  // PublicResolverNameChanged represents a NameChanged event raised by the PublicResolver contract.
   988  type PublicResolverNameChanged struct {
   989  	Node [32]byte
   990  	Name string
   991  	Raw  types.Log // Blockchain specific contextual infos
   992  }
   993  
   994  // FilterNameChanged is a free log retrieval operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
   995  //
   996  // Solidity: event NameChanged(bytes32 indexed node, string name)
   997  func (_PublicResolver *PublicResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverNameChangedIterator, error) {
   998  
   999  	var nodeRule []interface{}
  1000  	for _, nodeItem := range node {
  1001  		nodeRule = append(nodeRule, nodeItem)
  1002  	}
  1003  
  1004  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
  1005  	if err != nil {
  1006  		return nil, err
  1007  	}
  1008  	return &PublicResolverNameChangedIterator{contract: _PublicResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  1009  }
  1010  
  1011  // WatchNameChanged is a free log subscription operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  1012  //
  1013  // Solidity: event NameChanged(bytes32 indexed node, string name)
  1014  func (_PublicResolver *PublicResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverNameChanged, node [][32]byte) (event.Subscription, error) {
  1015  
  1016  	var nodeRule []interface{}
  1017  	for _, nodeItem := range node {
  1018  		nodeRule = append(nodeRule, nodeItem)
  1019  	}
  1020  
  1021  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  1022  	if err != nil {
  1023  		return nil, err
  1024  	}
  1025  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1026  		defer sub.Unsubscribe()
  1027  		for {
  1028  			select {
  1029  			case log := <-logs:
  1030  				// New log arrived, parse the event and forward to the user
  1031  				event := new(PublicResolverNameChanged)
  1032  				if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  1033  					return err
  1034  				}
  1035  				event.Raw = log
  1036  
  1037  				select {
  1038  				case sink <- event:
  1039  				case err := <-sub.Err():
  1040  					return err
  1041  				case <-quit:
  1042  					return nil
  1043  				}
  1044  			case err := <-sub.Err():
  1045  				return err
  1046  			case <-quit:
  1047  				return nil
  1048  			}
  1049  		}
  1050  	}), nil
  1051  }
  1052  
  1053  // 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.
  1054  type PublicResolverPubkeyChangedIterator struct {
  1055  	Event *PublicResolverPubkeyChanged // Event containing the contract specifics and raw log
  1056  
  1057  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1058  	event    string              // Event name to use for unpacking event data
  1059  
  1060  	logs chan types.Log        // Log channel receiving the found contract events
  1061  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1062  	done bool                  // Whether the subscription completed delivering logs
  1063  	fail error                 // Occurred error to stop iteration
  1064  }
  1065  
  1066  // Next advances the iterator to the subsequent event, returning whether there
  1067  // are any more events found. In case of a retrieval or parsing error, false is
  1068  // returned and Error() can be queried for the exact failure.
  1069  func (it *PublicResolverPubkeyChangedIterator) Next() bool {
  1070  	// If the iterator failed, stop iterating
  1071  	if it.fail != nil {
  1072  		return false
  1073  	}
  1074  	// If the iterator completed, deliver directly whatever's available
  1075  	if it.done {
  1076  		select {
  1077  		case log := <-it.logs:
  1078  			it.Event = new(PublicResolverPubkeyChanged)
  1079  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1080  				it.fail = err
  1081  				return false
  1082  			}
  1083  			it.Event.Raw = log
  1084  			return true
  1085  
  1086  		default:
  1087  			return false
  1088  		}
  1089  	}
  1090  	// Iterator still in progress, wait for either a data or an error event
  1091  	select {
  1092  	case log := <-it.logs:
  1093  		it.Event = new(PublicResolverPubkeyChanged)
  1094  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1095  			it.fail = err
  1096  			return false
  1097  		}
  1098  		it.Event.Raw = log
  1099  		return true
  1100  
  1101  	case err := <-it.sub.Err():
  1102  		it.done = true
  1103  		it.fail = err
  1104  		return it.Next()
  1105  	}
  1106  }
  1107  
  1108  // Error returns any retrieval or parsing error occurred during filtering.
  1109  func (it *PublicResolverPubkeyChangedIterator) Error() error {
  1110  	return it.fail
  1111  }
  1112  
  1113  // Close terminates the iteration process, releasing any pending underlying
  1114  // resources.
  1115  func (it *PublicResolverPubkeyChangedIterator) Close() error {
  1116  	it.sub.Unsubscribe()
  1117  	return nil
  1118  }
  1119  
  1120  // PublicResolverPubkeyChanged represents a PubkeyChanged event raised by the PublicResolver contract.
  1121  type PublicResolverPubkeyChanged struct {
  1122  	Node [32]byte
  1123  	X    [32]byte
  1124  	Y    [32]byte
  1125  	Raw  types.Log // Blockchain specific contextual infos
  1126  }
  1127  
  1128  // FilterPubkeyChanged is a free log retrieval operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1129  //
  1130  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  1131  func (_PublicResolver *PublicResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverPubkeyChangedIterator, error) {
  1132  
  1133  	var nodeRule []interface{}
  1134  	for _, nodeItem := range node {
  1135  		nodeRule = append(nodeRule, nodeItem)
  1136  	}
  1137  
  1138  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  1139  	if err != nil {
  1140  		return nil, err
  1141  	}
  1142  	return &PublicResolverPubkeyChangedIterator{contract: _PublicResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  1143  }
  1144  
  1145  // WatchPubkeyChanged is a free log subscription operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1146  //
  1147  // Solidity: event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y)
  1148  func (_PublicResolver *PublicResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverPubkeyChanged, node [][32]byte) (event.Subscription, error) {
  1149  
  1150  	var nodeRule []interface{}
  1151  	for _, nodeItem := range node {
  1152  		nodeRule = append(nodeRule, nodeItem)
  1153  	}
  1154  
  1155  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  1156  	if err != nil {
  1157  		return nil, err
  1158  	}
  1159  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1160  		defer sub.Unsubscribe()
  1161  		for {
  1162  			select {
  1163  			case log := <-logs:
  1164  				// New log arrived, parse the event and forward to the user
  1165  				event := new(PublicResolverPubkeyChanged)
  1166  				if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  1167  					return err
  1168  				}
  1169  				event.Raw = log
  1170  
  1171  				select {
  1172  				case sink <- event:
  1173  				case err := <-sub.Err():
  1174  					return err
  1175  				case <-quit:
  1176  					return nil
  1177  				}
  1178  			case err := <-sub.Err():
  1179  				return err
  1180  			case <-quit:
  1181  				return nil
  1182  			}
  1183  		}
  1184  	}), nil
  1185  }
  1186  
  1187  // 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.
  1188  type PublicResolverTextChangedIterator struct {
  1189  	Event *PublicResolverTextChanged // Event containing the contract specifics and raw log
  1190  
  1191  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1192  	event    string              // Event name to use for unpacking event data
  1193  
  1194  	logs chan types.Log        // Log channel receiving the found contract events
  1195  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1196  	done bool                  // Whether the subscription completed delivering logs
  1197  	fail error                 // Occurred error to stop iteration
  1198  }
  1199  
  1200  // Next advances the iterator to the subsequent event, returning whether there
  1201  // are any more events found. In case of a retrieval or parsing error, false is
  1202  // returned and Error() can be queried for the exact failure.
  1203  func (it *PublicResolverTextChangedIterator) Next() bool {
  1204  	// If the iterator failed, stop iterating
  1205  	if it.fail != nil {
  1206  		return false
  1207  	}
  1208  	// If the iterator completed, deliver directly whatever's available
  1209  	if it.done {
  1210  		select {
  1211  		case log := <-it.logs:
  1212  			it.Event = new(PublicResolverTextChanged)
  1213  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1214  				it.fail = err
  1215  				return false
  1216  			}
  1217  			it.Event.Raw = log
  1218  			return true
  1219  
  1220  		default:
  1221  			return false
  1222  		}
  1223  	}
  1224  	// Iterator still in progress, wait for either a data or an error event
  1225  	select {
  1226  	case log := <-it.logs:
  1227  		it.Event = new(PublicResolverTextChanged)
  1228  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1229  			it.fail = err
  1230  			return false
  1231  		}
  1232  		it.Event.Raw = log
  1233  		return true
  1234  
  1235  	case err := <-it.sub.Err():
  1236  		it.done = true
  1237  		it.fail = err
  1238  		return it.Next()
  1239  	}
  1240  }
  1241  
  1242  // Error returns any retrieval or parsing error occurred during filtering.
  1243  func (it *PublicResolverTextChangedIterator) Error() error {
  1244  	return it.fail
  1245  }
  1246  
  1247  // Close terminates the iteration process, releasing any pending underlying
  1248  // resources.
  1249  func (it *PublicResolverTextChangedIterator) Close() error {
  1250  	it.sub.Unsubscribe()
  1251  	return nil
  1252  }
  1253  
  1254  // PublicResolverTextChanged represents a TextChanged event raised by the PublicResolver contract.
  1255  type PublicResolverTextChanged struct {
  1256  	Node       [32]byte
  1257  	IndexedKey string
  1258  	Key        string
  1259  	Raw        types.Log // Blockchain specific contextual infos
  1260  }
  1261  
  1262  // FilterTextChanged is a free log retrieval operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1263  //
  1264  // Solidity: event TextChanged(bytes32 indexed node, string indexedKey, string key)
  1265  func (_PublicResolver *PublicResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverTextChangedIterator, error) {
  1266  
  1267  	var nodeRule []interface{}
  1268  	for _, nodeItem := range node {
  1269  		nodeRule = append(nodeRule, nodeItem)
  1270  	}
  1271  
  1272  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "TextChanged", nodeRule)
  1273  	if err != nil {
  1274  		return nil, err
  1275  	}
  1276  	return &PublicResolverTextChangedIterator{contract: _PublicResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
  1277  }
  1278  
  1279  // WatchTextChanged is a free log subscription operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1280  //
  1281  // Solidity: event TextChanged(bytes32 indexed node, string indexedKey, string key)
  1282  func (_PublicResolver *PublicResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverTextChanged, node [][32]byte) (event.Subscription, error) {
  1283  
  1284  	var nodeRule []interface{}
  1285  	for _, nodeItem := range node {
  1286  		nodeRule = append(nodeRule, nodeItem)
  1287  	}
  1288  
  1289  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "TextChanged", nodeRule)
  1290  	if err != nil {
  1291  		return nil, err
  1292  	}
  1293  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1294  		defer sub.Unsubscribe()
  1295  		for {
  1296  			select {
  1297  			case log := <-logs:
  1298  				// New log arrived, parse the event and forward to the user
  1299  				event := new(PublicResolverTextChanged)
  1300  				if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  1301  					return err
  1302  				}
  1303  				event.Raw = log
  1304  
  1305  				select {
  1306  				case sink <- event:
  1307  				case err := <-sub.Err():
  1308  					return err
  1309  				case <-quit:
  1310  					return nil
  1311  				}
  1312  			case err := <-sub.Err():
  1313  				return err
  1314  			case <-quit:
  1315  				return nil
  1316  			}
  1317  		}
  1318  	}), nil
  1319  }